我的枚举如下
enum class ImagesType(val descriptor: String) {
BIGGER("Bigger Image - Fall"),
SMALLER("Smaller Image - Lion"),
TALLER("Taller Image - Tree"),
LONGER("longer Image - Bridge")
}
Run Code Online (Sandbox Code Playgroud)
println(ImagesType.BIGGER)打印时BIGGERval x = ImagesType.valueOf("SMALLER"),它会得到val x = SMALLER这是因为name与枚举字符相同。我希望name用the 覆盖description,其中以下内容将为 true
println(ImagesType.BIGGER)打印时Bigger Image - Fallval x = ImagesType.valueOf("Smaller Image - Lion"),它会得到val x = SMALLER我试过
enum class ImagesType(override val name: String) {
BIGGER("Bigger Image - Fall"),
SMALLER("Smaller Image - Lion"),
TALLER("Taller Image - Tree"),
LONGER("longer Image - Bridge")
}
Run Code Online (Sandbox Code Playgroud)
但它未能表明这name是最终的。
我用方法来得到我想要的东西。
enum class ImagesType(val descriptor: String) {
BIGGER("Bigger Image - Fall"),
SMALLER("Smaller Image - Lion"),
TALLER("Taller Image - Tree"),
LONGER("longer Image - Bridge");
override fun toString(): String {
return descriptor
}
companion object {
fun getEnum(value: String): ImagesType {
return values().first { it.descriptor == value }
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以它得到了我需要的结果
println(ImagesType.BIGGER)打印时Bigger Image - Fallx = ImagesType.getEnum("Smaller Image - Lion"),它会得到 valx = SMALLER我通过valueOf将其替换为 来实现覆盖的解决方法getEnum。看来valueOf无法超越。
| 归档时间: |
|
| 查看次数: |
5081 次 |
| 最近记录: |