Kotlin和Java的互调

kotlin

1、在Java中调用Kotlin的方法

在Util.kt文件中声明了一个echo方法:

在JavaMain.java中调用:

这里注意的是:声明在文件中,而不是中,所以在Java代码中是通过文件名+kt.方法名

2、Java和Kotlin中调用Kotlin中object修饰的类

在KotlinMain.kt文件中声明:

在KotlinMain.kt文件中调用:类名+方法名

在JavaMain.java文件中调用:类名+INSTANCE+方法名

这里的是如何来的?我们将KotlinMain.kt文件转换为Java代码就能清楚的知道,在被编译成Java代码的时候修饰的类会生成一个静态对象。且看编译后的代码:

看到这段代码,大家就能轻而易举的明白在Java代码中如何调用方法了。

如何摆脱INSTANCE

Kotlin中被修饰的方法,编译成Java代码后就变成了一个静态方法,所以在Java中调用是不需要加上INSTANCE的。

3、Kotlin中调用class对象(JavaClass和KotlinClass)

这里的是一个java类,而是一个Kotlin类。

在Kotlin语法中,调用Java的必须使用类名::class.java

如果这个参数是Kotlin的类,我们可以写成和Java一样的,传参的时候传入。那么既然是Kotlin调用Kotlin,肯定有更加简单的写法了,在明确自己调用的是Kotlin类,我们就可以写成:

这里我们传入的不是对象了,而是对象,在调用的时候也就不用在后面加上,直接使用类名::class就行了。

4、Kotlin调用Java中的变量,此变量名在Kotlin中为关键字:

如果Java中声明的变量的变量名在Kotlin中不是关键字,那么直接用类名.变量名,如:

如果Java中声明的变量的变量名在Kotlin中是关键字,再调用上面的写法编译器就会发出警告"expecting an element",编译器都期待有这个元素,所以我们得写成这样:

)

使用一对反引号将变量名包围起来,这样编译器就会正确的执行了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181026G0BQCA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券