Java 呼叫 Kotlin 方式

測試一

@JvmStatic,當使用這個時,Java端有get和set的方法

//此處是Kotlin端
class MainActivity {
    companion object {
        @JvmStatic
        var DATA = ""
    }
}
//此處是Java端
public class TextJava {
    void testData() {
        MainActivity.getDATA();
        MainActivity.setDATA("123");
    }
}

測試二

@JvmField,當使用這個時,Java端刪除了get和set方法,如下

//此處是Kotlin端
class MainActivity {
    companion object {
        @JvmField
        var DATA = ""
    }
}
//此處是Java端
public class TextJava {
    void testData() {
        MainActivity.DATA = "";
        String tempString = MainActivity.DATA;
        Log.i("tag","data: "+tempString);
    }
}

測試三

在companion object內部使用@JvmField val時,Android Studio會出現警告

建議修改成const val,在Java端只有讀的方法

//此處是Kotlin端
class MainActivity {
    companion object {
        const val DATA = ""
    }
}
//此處是Java端
public class TextJava {
    void testData() {
        String tempString = MainActivity.DATA;
        Log.i("tag","data: "+tempString);
    }
}

測試四

直接使用@JvmField,此時不是靜態變數

//此處是Kotlin端
class MainActivity {
    @JvmField val data1 = ""
}
//此處是Java端
public class TextJava {
    void testData() {
        //因為不在companion object內部,不是靜態變數
        MainActivity mainActivity = new MainActivity();
        String tempString = mainActivity.data1;
        Log.i("tag","data: "+tempString);
    }
}

測試五

呼叫靜態Function,使用@JvmStatic

//此處是Kotlin端
class MainActivity {
    companion object {
        @JvmStatic fun runPrint() {
            Log.i("tag2","print AAA")
        }
    }
}
//此處是Java端
public class TextJava {
    void testData() {
        MainActivity.runPrint();
    }
}

備註:不熟悉也沒關係,Android Studio都會有提示唷!


訂閱Codeilin的旅程,若有最新消息會通知。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

WordPress.com.

向上 ↑

%d 位部落客按了讚: