• Kotlin调用Java程序重点分析


    在上一次https://www.cnblogs.com/webor2006/p/11530801.html中学习了Kotlin调用Java的使用方式及一些注意点,这次继续其这个场景进一步学习。

    数组(Array):

    下面先来看一下在Java中数组的情况:

    但是!!如果这样写:

    编译貌似没问题,但是!!在运行时看结果:

    所以从这个示例子来看,有点协变的感觉,也就是Java对于数组的设计就是一个类型不安全的,但是!!!在Kotlin中的数组是不变的(相对于协变和逆变来说的),这一点与Java存在明显的不同。这就意味着,我们无法将一个Array<String>赋给Array<Any>,这样就可以防止可能出现的运行期异常。

    在Kotlin中提供了原生类型数组来避免自动装箱与拆箱带来的成本:IntArray,DoubleArray,CharArray...

    下面看代码,先来新建一个Java类:

    然后在Kotlin中来调用一下它:

    咱们来瞅一下它返回的是啥类型:

    其中可以看一下IntArray的javadoc:

     

    那我们知道构建数组还有其它方法,如:

    那看下它的细节:

    也就是:

    其实也就是对应Java中的Integer[]类型。好,接下来我们来调用Java定义的方法,并传递参数:

    当编译为JVM字节码时,编译器会优化对于数组的访问,使之不会产生额外的成本。下面再来看:

    其实数组是有get和set方法,如下:

    但是这段代码会优化,其实是不会调用它里面的get和set方法的,只会直接通过索引去访问:

    可变参数:

    先建一个Java类,支持可变参数:

    接着在Kotlin中来调用一下它:

    直接传是不行的:

    此时就需要用到"spread operation *"将其打散,之前也学过了,如下:

  • 相关阅读:
    在Android studio中,测试输出数组中最大子数组的和
    我所理解的软件开发模式
    java实现随机输出300题四则运算
    Demo(3月28日)
    关于构建之法中小飞问题的个人看法
    对搭档代码的一些意见
    项目复审
    安卓UI测试(基于android studio环境 espresso框架)
    读构建之法后的一些个人感受
    思考题
  • 原文地址:https://www.cnblogs.com/webor2006/p/11537635.html
Copyright © 2020-2023  润新知