美文网首页IT技术
如何在 Java 和 Kotlin 之间进行互操作

如何在 Java 和 Kotlin 之间进行互操作

作者: 屈子腾 | 来源:发表于2019-11-26 21:34 被阅读0次

    原创: Android 谷歌开发者

    Kotlin 超好用,您也许想用 Kotlin 写所有的东西,但那些现有的 Java 语言代码该怎么办呢?或者您需要用到一个利用 Java 语言编写并已经在很多 Kotlin 或者 Java 项目里被采用的库或者项目。

    1. 可空性
      Java 默认又有数值可空性,而Kotlin没有。所以,如果使用Kotlin来调用Java功能。Kotlin不会知道这个功能能不能返回或受到空值,因此需要添加问号或者感叹号来告诉Kotlin有可能出现空值。不过可以通过注解标识。
      java实现
    @NotNull
    Set<@NotNull String> toSet(@NotNull Collection<@NotNull String> elements){...}
    

    kotlin 实现

    fun toSet(elements: (Mutable)Collection<String>) : (Mutable)Set<String>{...}
    
    1. Getters/Setters
      如果java空参方法是以get开头的,Kotlin就知道是get方法,通过属性访问它。如果是由set开头的单一参数方法,kotlin会知道是set方法,给属性直接赋值。

    2. 关键字
      Java和kotlin的关键字不同,因此在kotlin调用时,就可能出现一些问题。不过Kotlin可以通过增加''可以解决,但是''不是很友好,尽可能进行重命名
      例:is是kotlin的关键字,在java中不是,可以作为一个方法名

    java代码
    public boolean is(SomeObject input ){...}
    kotlin 的调用
    something.'is'(input)
    
    1. Any
      试着避免在任何扩展方法和扩展属性上使用Any。

    2. 运算符重载
      java 不存在运算符重载,但是kotlin存在

    a+b    a.plus(b)
    a-b    a.minus(b)
    a*b    a.times(b)
    a/b    a.div(b)
    a..b   a.rangeTo(b)
    +a     a.unaryPlus()
    -a     a.unaryMinus()
    !a     a.not()
    a++    a.inc()
    a--    a.dec()
    

    相关文章

      网友评论

        本文标题:如何在 Java 和 Kotlin 之间进行互操作

        本文链接:https://www.haomeiwen.com/subject/srgywctx.html