Java調用Kotlin——可見屬性的映射

根據官方文檔及編譯後的class文件,可以得出:
Kotlin的可見屬性以以下方式映射到Java中:

● private 成員仍編譯成 java中private 成員

● private top-level declarations 編譯成 java中package-local declarations。默認情況下,top-level的成員或方法會在當前包下被單獨編譯成“文件名+kt”的class文件,包含此private屬性或方法,且僅原kotlin文件內的定義的類可以調用,其他類無法調用。對於非const屬性,會通過“文件名+Kt.access$get+屬性+$p()”的方式調用。

● protected 編譯成 java中protected (不過需要注意,Java中的protected允許從本包內的其他類訪問,但Kotlin不是,kotlin總是生成get/set方法以供調用,不能直接訪問,所以java類有更廣泛的範圍訪問。)

● internal編譯成java中 public 。internal類的成員經歷了名稱修改,使得從Java中意外地使用它們變得更加困難,並且允許根據Kotlin規則對具有相同簽名的成員進行重載,這些成員彼此看不到彼此;編譯成class時會生get/set$production_sources_for_module_$module_name()的方法

● public 仍編譯成 public.

參考:http://kotlinlang.org/docs/reference/visibility-modifiers.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章