小编nei*_*ldo的帖子

Kotlin:Enum 类上的公共接口,具有从 String 映射的静态方法

假设我有许多枚举类,如下所示:

enum class Hero(val alias: String) {
    SUPERMAN("Clark Kent"),
    BATMAN("Bruce Wayne");

    companion object {
        fun fromAlias(value: String): Hero? = Hero.values().find { it.alias.equals(value, true) }
    }
}

enum class Villain(val alias: String) {
    TWO_FACE("Harvey Dent"),
    RIDDLER("Edward Nigma");

    companion object {
        fun fromAlias(value: String): Villain? = Villain.values().find { it.alias.equals(value, true) }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够创建一个通用接口来处理该fromAlias方法,以便我仍然可以使用Hero.fromAlias("Bruce Wayne"). 所以我的枚举类将被简化为:

enum class Hero(override val alias: String): AliasedEnum<Hero> {
    SUPERMAN("Clark Kent"),
    BATMAN("Bruce Wayne");
}

enum class Villain(override val alias: String): AliasedEnum<Villain> {
    TWO_FACE("Harvey …
Run Code Online (Sandbox Code Playgroud)

enums kotlin

1
推荐指数
1
解决办法
1944
查看次数

标签 统计

enums ×1

kotlin ×1