【发布时间】:2016-05-09 04:40:29
【问题描述】:
我正在尝试将以下代码转换为 Kotlin,并且仍然有 Java 使用的类 (Foo) 之一。进行这种转换的正确方法是什么?
原始Java:
public class Foo {
public static final String C_ID = "ID";
public static final String C_NAME = "NAME";
public static final String[] VALUES = {"X", "Y", "Z"};
public static String[] getAll() {
return new String[] {C_ID, C_NAME};
}
}
public class Bar {
public void doStuff() {
String var1 = Foo.C_ID;
String[] array1 = Foo.VALUES;
String[] array2 = Foo.getAll();
}
}
Foo 到 Kotlin 的自动转换
object Foo {
val C_ID = "ID"
val C_NAME = "NAME"
val VALUES = arrayOf("X", "Y", "Z")
val all: Array<String>
get() = arrayOf(C_ID, C_NAME)
}
问题:
Bar 类不能再访问 C_ID 或 VALUES(错误:“私人访问”)
如果我将“const”放在 C_ID 前面,它可以工作......但我不能对 VALUES 做同样的事情(“const”只能用于基本体或字符串)
我应该以不同的方式执行此操作(因此 Java 代码和 Kotlin 代码都可以访问 Foo 中的所有内容)?
【问题讨论】:
-
虽然
const val可能有你需要的效果,但它的用途不同(编译器时间常数),不应该将它用于互操作。
标签: properties static field kotlin