欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

kotlin和Java的相互调用示例详解

程序员文章站 2024-02-02 09:47:58
前言 互操作就是在kotlin中可以调用其他编程语言的接口,只要它们开放了接口,kotlin就可以调用其成员属性和成员方法,这是其他编程语言所无法比拟的。同时,在进行ja...

前言

互操作就是在kotlin中可以调用其他编程语言的接口,只要它们开放了接口,kotlin就可以调用其成员属性和成员方法,这是其他编程语言所无法比拟的。同时,在进行java编程时也可以调用kotlin中的api接口。

1.在kotlin中调用java方法

kotlin和java是两种不同的语言,所以在互相调用的时候,会有一些特殊的语法。kotlin中对象属性默认就带有setter和getter方法,所以在kotlin中调用java时直接变量名点属性就可获取到属性的setter和getter的一些操作。如下面的java对象,在kotlin中也可以直接maccount.setaccount("秦川小将");或者maccount.getaccount();这样调用。

在kotlin中调用java中的void方法和字符串

java示例:

public class account {
 private string account;
 private string token;
 public string getaccount() {
 return account;
 }

 public void setaccount(string account) {
 this.account = account;
 }

 public string gettoken() {
 return token;
 }

 public void settoken(string token) {
 this.token = token;
 }

 public string getdate() {
 return new simpledateformat("yyyy-mm-dd hh:mm:ss", locale.china).format(new date());
 }
}

kotlin示例:

val maccount = account()
maccount.account = "秦川小将"
maccount.token = "0xbe803e33c0bbd4b672b97158ce21f80c0b6f3aa6"
println(maccount.account)
println(maccount.token)
println(maccount.date)

log输出:

.../com.sample.app i/system.out: 秦川小将
.../com.sample.app i/system.out: 0xbe803e33c0bbd4b672b97158ce21f80c0b6f3aa6
.../com.sample.app i/system.out: 2018-01-31 10:50:48

在kotlin中调用java数组

java示例:

public class books {
 public list<string> getbookslist(){
  list<string> mbooks = new arraylist<>();
  mbooks.add("雪祭");
  mbooks.add("惊蜇");
  mbooks.add("风起陇西");
  mbooks.add("山河袈裟");
  mbooks.add("自在独行");
  mbooks.add("浮生六记");
  mbooks.add("撒哈拉的故事");
  mbooks.add("仓央嘉措诗传全集");
  return mbooks;
 }
}

kotlin示例:

val mbookslist = books()
val mbooks = mbookslist.bookslist
for (book in mbooks){
 println("$book")
}

log输出:

.../com.sample.app i/system.out: 雪祭
.../com.sample.app i/system.out: 惊蜇
.../com.sample.app i/system.out: 风起陇西
.../com.sample.app i/system.out: 山河袈裟
.../com.sample.app i/system.out: 自在独行
.../com.sample.app i/system.out: 浮生六记
.../com.sample.app i/system.out: 撒哈拉的故事
.../com.sample.app i/system.out: 仓央嘉措诗传全集

在kotlin中调用java静态成员

java示例:

public class dateutils {
 public static string getdate() {
  return new simpledateformat("yyyy-mm-dd hh:mm:ss", locale.china).format(new date());
 }
}

kotlin示例:

val mdate = dateutils.getdate() 
println("$mdate")

log输出:

.../com.sample.app i/system.out: 2018-01-31 10:50:48

2.在java中调用kotlin方法

在java中给kotlin中对象的属性赋值

kotlin示例:

class datautils {
  // 基本数据类型
  var mbyte: byte? = null
  var mshort: short? = null
  var mint: int? = null
  var mchar: char? = null
  var mlong: long? = null
  var mfloat: float? = null
  var mdouble: double? = null
  var mboolean: boolean? = null
  // 引用数据类型
  var mname: string? = null
}

java示例

datautils mdata = new datautils();
mdata.setmint(100000000);
mdata.setmchar('a');
mdata.setmlong(system.currenttimemillis());
mdata.setmfloat(100.0f);
mdata.setmdouble(100.0);
mdata.setmboolean(true);
system.out.print("----------基本数据类型----------\n");
system.out.print(mdata.getmint()+"\n");
system.out.print(mdata.getmchar()+"\n");
system.out.print(mdata.getmlong()+"\n");
system.out.print(mdata.getmfloat()+"\n");
system.out.print(mdata.getmdouble()+"\n");
system.out.print(mdata.getmboolean()+"\n");
system.out.print("----------引用数据类型----------\n");
mdata.setmname("秦川小将");
system.out.print(mdata.getmname()+"\n");

log输出

.../com.sample.app i/system.out: ----------基本数据类型----------
.../com.sample.app i/system.out: 100000000
.../com.sample.app i/system.out: a
.../com.sample.app i/system.out: 1517379001995
.../com.sample.app i/system.out: 100.0
.../com.sample.app i/system.out: 100.0
.../com.sample.app i/system.out: true
.../com.sample.app i/system.out: ----------引用数据类型----------
.../com.sample.app i/system.out: 秦川小将

注:在kotlin中char类型已经不再是数字类型了。

在java中调用kotlin中函数方法和带参方法

kotlin示例

class datatest{
  // fun方法
  fun doprint(){
    println("kotlin中的函数方法doprint()")
  }
  // 带参数fun方法
  fun setphone(phone: string) {
    println("$phone")
  }
}

java示例

datatest mdata = new datatest();
// 
mdata.doprint();
// 调用kotlin中的方法,并携带参数
mdata.setphone("176*****200");

log输出:

.../com.sample.app i/system.out: kotlin中的函数方法doprint()
.../com.sample.app i/system.out: 176*****200

在java中调用kotlin中静态的成员

如果一个类中所有的成员都是静态成员,将class改为object就不用每个方法都用companion object{}包裹了。

kotlin示例

object kotlinutils {
  fun getname(): string {
    return "秦川小将"
  }

  fun add(number1: double, number2: double): double {
    return number1 + number2
  }
}

java示例

string mname = kotlinutils.instance.getname();
log.e("输出", mname);

double mnumber = kotlinutils.instance.add(2.0, 3.0);
log.e("输出", double.tostring(mnumber));

log输出:

.../? e/输出: 秦川小将
.../? e/输出: 5.0

如果只有个别成员是静态成员时,需要将成员用companion object {}将成员包裹起来。

kotlin示例

class kotlinutils {
  //......
  companion object {
    fun name(): string {
      return "秦川小将"
    }
  }
}

java示例

string mname = kotlinutils.companion.name();
log.e("输出", mname);

log输出:

.../? e/输出: 秦川小将

注意:两种静态写法调用方法是不一样,第一种写法是通过 instance 关键字,第二种写法是通过companion关键字。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。