Kotlin-39.kotlin調(diào)用Java之一(Call Java from Kotlin)

官方文檔: http://kotlinlang.org/docs/reference/java-interop.html

1.在Kotlin中調(diào)用Java代碼(Calling Java code from Kotlin)

Kotlin在設(shè)計時就考慮了與Java的互操作性,
所以可以輕松在Kotlin中調(diào)用現(xiàn)有Java代碼,也能順利在Java中調(diào)用Kotlin代碼!
在Kotlin使用Java的集合類的示例如下:
    import java.util.* //導(dǎo)入java類庫util
    fun demo(source: List<Int>) {
        val list = ArrayList<Int>()
        // kotlin的for循環(huán)對Java集合類同樣有效
        for (item in source) {
            list.add(item)
        }
        // kotlin操作符對java同樣有效
        for (i in 0..source.size() - 1) {
            list[i] = source[i] //get和set訪問器被調(diào)用(見下文)
        }
    }

2.Getter和Setter方法

如果java字段成員的getter和setter方法遵循Java慣例(即名稱以get開頭的無參數(shù)方法和以set開頭的單參數(shù)方法),
它們在Kotlin中都被表示為kotlin屬性,可以直接調(diào)用,例如:
    import java.util.Calendar //導(dǎo)入java日歷類庫
    fun calendarDemo() {
        val calendar = Calendar.getInstance()

        //相當(dāng)于調(diào)用calendar.getFirstDayOfWeek()
        if (calendar.firstDayOfWeek == Calendar.SUNDAY) {

            //相當(dāng)于調(diào)用calendar.setFirstDayOfWeek(Calendar.MONDAY)
            calendar.firstDayOfWeek = Calendar.MONDAY
        }
    }

注意:
    如果Java類某字段只有一個setter,在Kotlin中不會作為kotlin屬性!
    因為Kotlin目前不支持只寫(set-only)屬性!

3.返回void的方法(Methods returning void)

如果一個Java方法返回void,那么從Kotlin調(diào)用時中返回Unit,
如果使用該方法的返回值,它將被Kotlin編譯器在調(diào)用處賦值,因為該值本身是預(yù)先知道(即Unit)
    //kotlin代碼
    fun main(args: Array<String>) {
        val v = VoidDemo.vid()
        println(v) // 輸出kotlin.Unit
    }

    //java代碼
    public class VoidDemo{
      public static void vid(){

        }
    }

4.對Java標(biāo)識符(Kotlin關(guān)鍵字)進(jìn)行轉(zhuǎn)義(Escaping for Java identifiers)

一些Kotlin關(guān)鍵字在Java中是有效標(biāo)識符(如in,object,is等),
如果Java類庫使用了Kotlin關(guān)鍵字作為方法名,可用反引號(`)轉(zhuǎn)義java方法名,然后在kotlin調(diào)用該方法
示例:
    //is()是java方法名/函數(shù)名,但is是kotlin關(guān)鍵字,所以在kotlin中需要添加反引號`轉(zhuǎn)義
    foo.`is`(bar)

簡書:http://www.itdecent.cn/p/d75c0141d61e
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/75000034
GitHub博客:http://lioil.win/2017/07/11/Kotlin-javaInKotlin.html
Coding博客:http://c.lioil.win/2017/07/11/Kotlin-javaInKotlin.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容