快速上手 Kotlin 開發系列之與 Java 互調 (1)

學習完基礎語法以後,咱們來學習下 Java 和 Kotlin 互相調用的問題java

本節將介紹 Kotlin 與 Java 之間的語法變化函數

Kotlin 文件中的函數

首先讓你們感到很是不適應的一點是,Kotlin 的函數竟然能夠直接寫在文件中,而不用寫在類中,但若是你知道 Kotlin 的代碼編譯之後依舊是 JVM 平臺的一個 class,這一點應該就很好理解了。 例如,咱們在 Utils.kt 中寫以下函數:學習

在 Java 的類中能夠作以下的調用:3d

從調用能夠看出,Kotlin 文件中的函數編譯後直接轉換爲對應文件名 + Kt 類中以 public static 開頭的方法。code

object 關鍵字

還有一種 Kotlin 中特殊的語法,object + 類聲明,這種寫法是在 Kotlin 中建立一個匿名內部類的寫法:cdn

若是在 Kotlin 代碼中則能夠直接調用:blog

若是在 Java 代碼調用,須要使用如下方法:it

簡單分析下,其實構造方法變成了私有方法,暴露了一個靜態的當前實例 INSTANCE ,經過它咱們能夠訪問到其中的方法。io

經過 Java 代碼調用咱們可以看出, object 關鍵字的類實際上是 Kotlin 單例的一種寫法。編譯

Class 和 KClass

使用 Java 時咱們有的時候傳遞某個類的 class,可是在 Kotlin 中調用 Java 類的 class 須要在後面追加 .java,例如咱們有一個 JavaMain.java 的 Java 類,咱們使用它的 class 時則須要這樣調用:JavaMain::class.java。

爲何會有這樣的特殊語法呢?這是由於 Kotlin 的 class 和 Java 的 class 格式是不一致的。 在 Kotlin 中,全部的類並非編譯成 Class,而是編譯成 KClass,例如:

與 Java 在關鍵字上的衝突

例如在 Java 類中有一個變量 in

in 在 Kotlin 中是一個關鍵字,若是在 Kotlin 中調用就會報錯

正確調用方法應該是將該變量使用兩個反引號包裹(`)

以上就是本節內容,歡迎你們關注~

長按關注
相關文章
相關標籤/搜索