• 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的赋值蔓延到程序的其他地方,而是在发生问题之处就立刻通过断言来解决。

  • 相关阅读:
    axios基础用法
    CSS盒子模型
    前端跨域问题解决方案
    跨域-iframe
    swagger UI配置
    React安装和启动
    React 学习笔记
    redis学习笔记
    10个排序算法,待更新
    docker常用命令,持续更新。。。
  • 原文地址:https://www.cnblogs.com/webor2006/p/11530801.html
Copyright © 2020-2023  润新知