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
领取专属 10元无门槛券
私享最新 技术干货