2
在Java中,我們可以這樣做:Java靜態最終在科特林:常量 'VAL' 初始化應該是一個恆定值
public class TestA {
public static final boolean flag = true;
public static final String str = flag ? "A" : "B"; // ok
}
,但不能在科特林
class TestA {
companion object {
const val flag = true
const val str = if (flag) "A" else "B" //err: Const 'val' initializer should be a constant value
val str2 = if (flag) "A" else "B" //ok, but not equals [public static final] in Java.
}
}
試圖@JvmStatic on non-const str2,但是反編譯爲java代碼,它是
private static final String str2 = "A"
public static final String getStr2() {
return Companion.getStr2();
}
問題:kotlin if-else等於?: in java,但不能用於const val。爲此需要解決方案。
帶@JvmField的非const val不會創建getter,它是** public static final **,那就是我正在尋找的!謝謝。 – lymoge