lor*_*nzo 3 enums interface class kotlin
如果我定义一个枚举类,让我们说:
enum class MyEnum { }
Run Code Online (Sandbox Code Playgroud)
我可以执行以下操作,因为枚举类都有一个values
方法:
val values = MyEnum.values()
Run Code Online (Sandbox Code Playgroud)
现在我希望我的枚举实现一个接口并可以访问 values() 方法:
enum class MyEnum : EnumInterface { }
interface EnumInterface {
fun values() : Array<T>
fun doStuff() {
this.values()
}
}
Run Code Online (Sandbox Code Playgroud)
这不会编译,我确定如何键入 values 方法。是否可以定义这样的接口?谢谢!
你真的很接近正确答案。您需要定义通用接口,并且您的 enum 应该使用 enum 的类来扩展它,如下所示:
enum class MyEnum : EnumInterface<MyEnum> {
A,B,C;
override fun valuesInternal() = MyEnum.values()
}
interface EnumInterface<T> {
fun valuesInternal():Array<T>
fun doStuff() {
this.valuesInternal()
}
}
Run Code Online (Sandbox Code Playgroud)