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.") }