測試一
@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的旅程,若有最新消息會通知。
廣告
發表迴響