快速上手 Kotlin 开发系列之与 Java 互调 (1)
2020/3/19 23:01:34
本文主要是介绍快速上手 Kotlin 开发系列之与 Java 互调 (1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
学习完基础语法之后,我们来学习下 Java 和 Kotlin 互相调用的问题
本节将介绍 Kotlin 与 Java 之间的语法变化
Kotlin 文件中的函数
首先让大家感到非常不适应的一点是,Kotlin 的函数居然可以直接写在文件中,而不用写在类中,但如果你知道 Kotlin 的代码编译以后依旧是 JVM 平台的一个 class,这一点应该就很好理解了。 例如,我们在 Utils.kt 中写如下函数:
![](/upload/202003/19/202003192301340971.png)
在 Java 的类中可以做如下的调用:
![](/upload/202003/19/202003192301341332.png)
从调用可以看出,Kotlin 文件中的函数编译后直接转换为对应文件名 + Kt
类中以 public static
开头的方法。
object 关键字
还有一种 Kotlin 中特殊的语法,object + 类声明
,这种写法是在 Kotlin 中创建一个匿名内部类的写法:
![](/upload/202003/19/202003192301341449.png)
如果在 Kotlin 代码中则可以直接调用:
![](/upload/202003/19/202003192301341664.png)
如果在 Java 代码调用,需要使用以下方法:
![](/upload/202003/19/202003192301342904.png)
简单分析下,其实构造方法变成了私有方法,暴露了一个静态的当前实例
INSTANCE
,通过它我们可以访问到其中的方法。通过 Java 代码调用我们能够看出, object 关键字的类其实是 Kotlin 单例的一种写法。
Class 和 KClass
使用 Java 时我们有的时候传递某个类的 class,但是在 Kotlin 中调用 Java 类的 class 需要在后面追加 .java,例如我们有一个 JavaMain.java 的 Java 类,我们使用它的 class 时则需要这样调用:JavaMain::class.java。
![](/upload/202003/19/202003192301343138.png)
为什么会有这样的特殊语法呢?这是因为 Kotlin 的 class 和 Java 的 class 格式是不一致的。 在 Kotlin 中,所有的类并不是编译成 Class,而是编译成 KClass,例如:
![](/upload/202003/19/202003192301343451.png)
与 Java 在关键字上的冲突
例如在 Java 类中有一个变量 in
:
![](/upload/202003/19/202003192301343607.png)
而 in
在 Kotlin 中是一个关键字,如果在 Kotlin 中调用就会报错
![](/upload/202003/19/202003192301344554.png)
正确调用方法应该是将该变量使用两个反引号包裹(`)
![](/upload/202003/19/202003192301345384.png)
以上就是本节内容,欢迎大家关注~
![长按关注](/upload/202003/19/202003192301345511.png)
这篇关于快速上手 Kotlin 开发系列之与 Java 互调 (1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路