使用 kotlin 1.6.21 和 java 11。擁有一個具有默認值屬性的 kotlin 介面。如何在java代碼中使用它?
interface ISomeKInterface {
val flag: Int
get() = return 1
fun onProc(data: Data) {
if (flag == 1) {
// do something_1
} else if (flag == 2) {
// do something_2
} else {
// do the other
}
}
}
在科特林它可以做
object : ISomeKInterface {
override val flag: Int = 2
override fun onProc(data: Data) {
if (flag == 1) {
// do something_1
} else if (flag == 2) {
// do different implementation for flag 2
} else {
// do the other
}
}
}
uj5u.com熱心網友回復:
我在java中使用kotlin介面,很簡單
public class Test {
public static void main(String[] args) {
ISomeKInterface iSomeKInterface = new ISomeKInterface() {
@Override
public void onProc() {
}
@Override
public int getFlag() {
return 2;
}
};
System.out.println(iSomeKInterface.getFlag());
}
}
uj5u.com熱心網友回復:
實際上,代碼override val flag: Int = 2并沒有改變 中的flag值ISomeKInterface,您可以使用super.flag獲取值為 1 的值。
更進一步,kotlin 自動生成get,set函式,所以如果你想在 java 中使用,你需要改變 getFlag() 函式:
ISomeKInterface anInterface = new ISomeKInterface() {
@Override
public void onProc(@NonNull Object data) {
}
@Override
public int getFlag() {
return 2;
}
};
uj5u.com熱心網友回復:
Java 8 中的默認方法:
public interface Alarm {
default String turnAlarmOn() {
return "Turning the alarm on.";
}
default String turnAlarmOff() {
return "Turning the alarm off.";
}
}
參考:https ://www.baeldung.com/java-static-default-methods
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/511614.html
標籤:安卓科特林kotlin 互操作
