gpt4 book ai didi

android - 如何在 Kotlin 中使多个子集保持不变

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:18 25 4
gpt4 key购买 nike

在有一个定义了一些常量的类的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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com