Kotlin – 将enum的值赋给没有.value的变量
现在是什么样子:
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") }
这输出: You've already been registered
。 但我想知道,有没有办法只是分配val message = Message.ALREADY_REGISTERED
并立即具有值,而不必使用。值?
当试图(我想要的代码)
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
。
那么我可以使枚举返回值的默认值而不是它的名字?
你需要为你的enum class
重写toString()
:
enum class Message(val value: String) { ALREADY_REGISTERED("You've already been registered"); override fun toString() = value }
你也可以使用类委托,如果你想能够把你的枚举类作为一个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.") }