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的賦值蔓延到程序的其他地方,而是在發生問題之處就立刻通過斷言來解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM