首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

kotlin跟java 相互调用

Java 调用 kotlin

Java 调用 Kotlin 的顶层属性更方法

新建 kotlin 文件 : KTTest.kt 。定义如下属性跟方法 ( 这些属性跟方法没有在类里面 直接定义在文件里面)

varktValue="kt"

funktTest(){}

在 Java 中调用上面的属性跟方法 。java 会提供 xxxxKt 供 java 调用 。

调用 const 修饰的属性 ( const 修饰的属性 必须是 val 类似 java 的final 修饰)

上面说到 kotlin 定义顶层属性的时候会提供 xxxxKt 类供 java 调用 。这个 xxxxKt 类名可以用注解 自己定义

用上面的注解之后 java 中调用 kotlin 的顶层属性就要用自己定义的名字了

如果有两个 kotlin 文件 : FileUtils.kt 、ImageUtils.kt 都自定义了同样的名字 ,@file:JvmName("utils")则在调用的时候会出错 。解决办法是在其中一个文件最顶上加个如下注解 (意思是合并注解了同样名字的 kotlin 文件 的顶层属性跟方法)

java 调用 kotlin 类里面的属性/方法 (kotlin 默认提供 get/set)

如果要直接 `点`出来则加个注解 @JvmFileld 即可

调用 kotlin 伴生类(companion)里面的属性

kotlin 中的申明类 (object 修饰的类)

kotlin 中没有异常 try/catch 处理 如果在 java 层需要有对应的处理 则需要加个注解@Throws(IOException::class) 不同异常传入的类不同

Kotlin 调用 Java

kotlin 调用 java 的静态方法跟属性

kotlin 调用 java 的普通方法跟属性 (private 修饰的需要提供get、set方法)

java 中提供了 get/set 。 kotlin 调用的时候也不需要 getxxxx 直接 `点`即可

kotlin 调用 java 有参方法

有个特殊的例子: 可变长度参数 (可变长度参数相当于数组 要传 xxxArray类型参数)

kotlin 调用 java 有可变长度参数的方法时可以直接传一串数字,也可以传一个 array 。如果是传 array 则要用展开符号 *

kotlin 的基类是 Any 。如果 kotlin 的类想调用 java 的基类 object 里的方法就要用关键字as

kotlin 调用 java native 方法用关键字 external

// END

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券