gpt4 book ai didi

enums - Kotlin - 将枚举值分配给没有 .value 的变量

转载 作者:行者123 更新时间:2023-12-02 11:38:32 25 4
gpt4 key购买 nike

现在怎么样:

class Trial {
companion object{
@JvmStatic fun main(args: Array<String>){
val message = Message.ALREADY_REGISTERED.value
println(message);
}
}
}

enum class Message constructor(val value: String){
ALREADY_REGISTERED("You've already been registered")
}

输出:您已经注册。但我想知道,有没有一种方法可以只分配 val message = Message.ALREADY_REGISTERED 并立即获得该值,而无需使用 .value

尝试此操作时(使用我想要的代码)

class Trial {
companion object{
@JvmStatic fun main(args: Array<String>){
val message = Message.ALREADY_REGISTERED
println(message);
}
}
}

enum class Message constructor(val value: String){
ALREADY_REGISTERED("You've already been registered")
}

它输出ALREADY_REGISTERED

那么我可以让枚举的值返回默认值而不是它的名称吗?

最佳答案

您需要覆盖 toString()对于您的枚举类:

enum class Message(val value: String) {
ALREADY_REGISTERED("You've already been registered");

override fun toString() = value
}

您还可以使用class delegation如果您希望能够将枚举类视为 CharSequence(如 StringBuilder 和其他 String 类):

enum class Message(val value: String) : CharSequence by value {
ALREADY_REGISTERED("You've already been registered");

override fun toString() = value
}

然后您就可以像任何其他 CharSequence 一样使用它。例如:

buildString {
append("Message received: ")
appendln(Message.ALREADY_REGISTERED)
appendln()
appendln("Don't forget to do your laundry.")
}

关于enums - Kotlin - 将枚举值分配给没有 .value 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41614490/

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