學習完基礎語法以後,咱們來學習下 Java 和 Kotlin 互相調用的問題java
本節將介紹 Kotlin 與 Java 之間的語法變化函數
首先讓你們感到很是不適應的一點是,Kotlin 的函數竟然能夠直接寫在文件中,而不用寫在類中,但若是你知道 Kotlin 的代碼編譯之後依舊是 JVM 平臺的一個 class,這一點應該就很好理解了。 例如,咱們在 Utils.kt 中寫以下函數:學習
在 Java 的類中能夠作以下的調用:3d
從調用能夠看出,Kotlin 文件中的函數編譯後直接轉換爲對應文件名 + Kt
類中以 public static
開頭的方法。code
還有一種 Kotlin 中特殊的語法,object + 類聲明
,這種寫法是在 Kotlin 中建立一個匿名內部類的寫法:cdn
若是在 Kotlin 代碼中則能夠直接調用:blog
若是在 Java 代碼調用,須要使用如下方法:it
簡單分析下,其實構造方法變成了私有方法,暴露了一個靜態的當前實例
INSTANCE
,經過它咱們能夠訪問到其中的方法。io經過 Java 代碼調用咱們可以看出, object 關鍵字的類實際上是 Kotlin 單例的一種寫法。編譯
使用 Java 時咱們有的時候傳遞某個類的 class,可是在 Kotlin 中調用 Java 類的 class 須要在後面追加 .java,例如咱們有一個 JavaMain.java 的 Java 類,咱們使用它的 class 時則須要這樣調用:JavaMain::class.java。
爲何會有這樣的特殊語法呢?這是由於 Kotlin 的 class 和 Java 的 class 格式是不一致的。 在 Kotlin 中,全部的類並非編譯成 Class,而是編譯成 KClass,例如:
例如在 Java 類中有一個變量 in
:
而 in
在 Kotlin 中是一個關鍵字,若是在 Kotlin 中調用就會報錯
正確調用方法應該是將該變量使用兩個反引號包裹(`)
以上就是本節內容,歡迎你們關注~