gpt4 book ai didi

kotlin - 是否可以覆盖 Kotlin 的 ENUM 名称?

转载 作者:行者123 更新时间:2023-12-02 13:16:19 24 4
gpt4 key购买 nike

我有如下枚举

    enum class ImagesType(val descriptor: String) {
BIGGER("Bigger Image - Fall"),
SMALLER("Smaller Image - Lion"),
TALLER("Taller Image - Tree"),
LONGER("longer Image - Bridge")
}
  • 当我println(ImagesType.BIGGER) 时,它会打印BIGGER
  • 当我 val x = ImagesType.valueOf("SMALLER") 时,它将得到 val x = SMALLER

这是因为 name 与枚举字符相同。我希望用 description 覆盖 name,下面的情况将改为 true

  • 当我 println(ImagesType.BIGGER) 时,它将打印 Bigger Image - Fall
  • 当我 val 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")
}

但是它没有说明 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 }
}
}
}

所以它得到了我需要的结果

  • 当我 println(ImagesType.BIGGER) 时,它将打印 Bigger Image - Fall
  • 当我验证 x = ImagesType.getEnum("Smaller Image - Lion") 时,它会得到 val x = SMALLER

我通过用 getEnum 替换它来解决覆盖 valueOf 的问题。看起来 valueOf 无法被覆盖。

关于kotlin - 是否可以覆盖 Kotlin 的 ENUM 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63952044/

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