在有一个定义了一些常量的类的java中,一些在内部类中。
他们可以被称为:
Data.HTTP_SCHEME;
Data.Constants.ResponseType.XML;
Data.PayloadType.JSON
如何在 Kotlin 中做同样的事情?
public class Data {
public static final String HTTP_SCHEME = "http";
public static final String HTTPS_SCHEME = "https";
public static class Constants {
public static class ResponseType {
public static final String XML = "xml";
public static final String JSON = "json";
}
public static class PayloadType {
public static final String JSON = "json";
}
public static class ItemDataType {
public static final String ID = "id";
public static final String IS_GLOBAL = "isGlobal";
public static final String IS_TRANSLATED = "isTranslated”;
}
}
}
最佳答案
与 Java 不同,Kotlin 没有静态变量。相反,他们有伴生对象。 每个类都带有一个伴随对象,您可以使用它来存储静态值。
class Constants {
companion object {
val HTTP_SCHEME = "http"
val HTTPS_SCHEME = "https"
}
}
fun main(args: Array<String>) {
println(Constants.HTTP_SCHEME)
println(Constants.HTTPS_SCHEME)
}
或者如果你想将你的静态值组合在一起,你可以创建非伴随对象
class Constants {
companion object {
var HTTP_SCHEME = "http"
var HTTPS_SCHEME = "https"
}
object ResponseType {
val XML = "xml"
val JSON = "json"
}
object PayloadType {
val JSON = "json"
}
object ItemDataType {
val ID = "id"
val IS_GLOBAL = "isGlobal"
val IS_TRANSLATED = "isTranslated"
}
}
fun main(args: Array<String>) {
println(Constants.ItemDataType.IS_TRANSLATED)
println(Constants.PayloadType.JSON)
}
如果您希望您的伴生对象值作为静态值公开给某些 Java 类,您可以使用 @JvmStatic
注释它们
class Constants {
companion object {
@JvmStatic var HTTP_SCHEME = "http"
@JvmStatic var HTTPS_SCHEME = "https"
}
}
关于android - 如何在 Kotlin 中使多个子集保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46396104/