Kotlin调用Java程序解析

Kotlin跟Java是百分百兼容的,换言之,也就是它们俩是可以互操作的,也就是Java可以调Kotlin,Koltin可以调Java,所以下面来看一下在Kotlin中如何来调用Java代码:

咱们来看一下这个ArrayList是Kotlin的么?

接下来往里面添加一些元素,并进行遍历:

接下来还可以用跟Java一样闭开区间的方式来遍历,如下:

接下来咱们准备新建一个纯Java的类,然后在Kotlin中访问该Java类,如下:

接下来我们在Kotlin怎么来实例化该JavaBean呢?其实跟我们写纯Kotlin的代码木啥区别:

好,接下来调用它里面的setter和getter方法,此时就得是Kotlin的方式了,而不是像Java直接去调,如下:

所以赋值如下:

 

接下来则是给boolean的成员变量赋值,按着Kotlin的习惯,会用is开头来对其进行赋值,如下:

接下来就可以取出数据了:

虽说在Kotlin中去调用Java是比较简单,但是由于Kotlin的语法跟Java的语法还是有不少的差别的,所以下面来介绍一些要注意的一些小细节:

1、在Java中,所有引用都可能为null,然而在Kotlin中,对null是有着严格的检查与限制的,这就使得某个来自于Java的引用在Kotlin中变得不再适合;基于这个原因,在Kotlin中,将来自于Java的声明类型称为平台类型(Platform Types)。对于这种类型(平台类型)来说,Kotlin的null检查就会得到一定的缓和,变得不再那么严格了。这样就使得空安全的语义要求变得与Java一致。当我们调用平台类型引用的方法时,Kotlin就不会在编译期间施加空安全的检查,使得编译可以正常通过;但是在运行期间则有可能抛出异常,因为平台类型引用值有可能为null。

下面用程序来验证一下:

目前这块肯定运行都正常,但是注意:

试试:

其中:

注意:我们没有能力能将任何一个类型给指定为平台类型,这个是Kotlin系统内置的。

接下来继续看代码:

其实是:

另外这里需要注意一个细节:

如果我们使用了不可空类型,编译器会在赋值时生成一个断言,这会防止Kotlin的不可空变量持有null值;同样,这一点也适用于Kotlin方法参数传递,我们在将一个平台类型值传递给方法的一个不可空参数时,也会生成一个断言。总体来说,Kotlin会竭尽所能防止null的赋值蔓延到程序的其他地方,而是在发生问题之处就立刻通过断言来解决。

原文地址:https://www.cnblogs.com/webor2006/p/11530801.html