这是一个枚举类:
enum class Foo(rawValue: Int) {
FIRST(1),
SECOND(2)
}
我可以用来companion object
通过原始值检索类型:
enum class Foo(rawValue: Int) {
FIRST(1),
SECOND(2)
companion object {
fun getCaseBy(value: Int): Foo? {
return entries.firstOrNull { it.rawValue == value }
}
}
}
然后像这样使用它:
Foo.getCaseBy(1)
有没有办法使用泛型将其getCaseBy
放入interface
?那么就不需要为每个枚举添加这种方法了?
类似于:
interface EnumInterface<T> {
companion object {
fun getCaseBy(value: E): T? {
return T.entries.firstOrNull { it.rawValue == value }
}
}
}
enum class Foo(rawValue: Int): EnumInterface(Foo::class) {
FIRST(1),
SECOND(2)
}
T
仅限于Enum
类,E
是检索T
的 rawValue 类型。- 只有
Enum
输入才能确认此接口EnumInterface
这可能吗?