Java調用Kotlin事項及Kotlin反射初步


繼續來研究Java調用Kotlin的一些東東。

@Throws注解:

我們知道在Kotlin中是不存在checked exception的,而在Java中是存在的,那。。如果從Java來調用Kotlin的角度那又是如何做到兼容的呢?下面寫一個Kotlin代碼:

接下來再用Java來調用此方法:

接下來運行一下:

那。。貌似有點不合理呀,很明顯這個方法是一定會拋異常的,那我們主動的try...catch..一下:

 

看一下異常提示:

其實在Kotlin中可以用@Throws注解來對確定要拋異常的(checked exception)方法進行說明,這樣在Java調用時則就可以變成了一個檢查異常了,如下:

好,此時如果我們在Java直接調用就會提示需要捕獲異常提示了,如下:

此時就符合Java的習慣了,因為FileNotFoundException就是checked exception嘛,所以捕獲一下:

空參數:

我們知道,在Kotlin中對於null的處理是非常嚴格的,如果一個方法參數是一個String不為空的就必須傳非空的,而如果是一個String?可為空的那就可以傳空,但是!!!在Java中很明顯木有這個要求嘛,所以下面用程序來說明這個問題:

好,接下來在Java中來調用一下它:

關鍵的來了:

很明顯當傳null時,method()方法體都木有執行到,直接拋異常了,注意這個異常不是空指針異常,是參數不合法異常,那如果修改一下method()方法:

 

再運行:

Kotlin反射初步:

接下來則來學習一下Kotlin的反射,我們知道在Java中反射的根源是Class,而在Kotlin中的反射根源是KClass,下面先來看一下Kotlin的系統包:

 

那為啥不像Java那樣都集成到rt.jar中呢?其實是由於在早期Kotlin並非內置到Android當中,而在Android中對於性能是比較講究的,而不像服務器配置比較大可以忽略這么小的一個jar包大小,所以將反射單獨弄出來就讓在Android寫代碼根據實際需要來依賴該反射包,如果沒用到那就可以不引用了。

好,下面來看下代碼:

其實它是KClass的實例,那如果要獲取它對應Java的Class對象呢?如下:

可以看一下它的細節:

先這么簡單入個門吧,之后再對反射不斷深入。。


免責聲明!

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



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