原創(chuàng): Android 谷歌開發(fā)者
Kotlin 超好用套像,您也許想用 Kotlin 寫所有的東西,但那些現(xiàn)有的 Java 語言代碼該怎么辦呢交惯?或者您需要用到一個利用 Java 語言編寫并已經(jīng)在很多 Kotlin 或者 Java 項目里被采用的庫或者項目鳄炉。
- 可空性
Java 默認(rèn)又有數(shù)值可空性竿秆,而Kotlin沒有。所以蚌卤,如果使用Kotlin來調(diào)用Java功能实束。Kotlin不會知道這個功能能不能返回或受到空值,因此需要添加問號或者感嘆號來告訴Kotlin有可能出現(xiàn)空值逊彭。不過可以通過注解標(biāo)識咸灿。
java實現(xiàn)
@NotNull
Set<@NotNull String> toSet(@NotNull Collection<@NotNull String> elements){...}
kotlin 實現(xiàn)
fun toSet(elements: (Mutable)Collection<String>) : (Mutable)Set<String>{...}
Getters/Setters
如果java空參方法是以get開頭的,Kotlin就知道是get方法侮叮,通過屬性訪問它避矢。如果是由set開頭的單一參數(shù)方法,kotlin會知道是set方法囊榜,給屬性直接賦值审胸。關(guān)鍵字
Java和kotlin的關(guān)鍵字不同,因此在kotlin調(diào)用時卸勺,就可能出現(xiàn)一些問題砂沛。不過Kotlin可以通過增加''可以解決,但是''不是很友好曙求,盡可能進(jìn)行重命名
例:is是kotlin的關(guān)鍵字碍庵,在java中不是映企,可以作為一個方法名
java代碼
public boolean is(SomeObject input ){...}
kotlin 的調(diào)用
something.'is'(input)
Any
試著避免在任何擴(kuò)展方法和擴(kuò)展屬性上使用Any。運算符重載
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()