如果我定义了一个枚举类,那么说:
enum class MyEnum { }
我可以执行以下操作,因为枚举类都具有values
方法:
val values = MyEnum.values()
现在,我希望我的枚举实现一个接口并可以访问values()方法:
enum class MyEnum : EnumInterface { }
interface EnumInterface {
fun values() : Array<T>
fun doStuff() {
this.values()
}
}
这不会编译,我确定如何键入values方法。可以定义这样的接口吗?谢谢!
答案 0 :(得分:2)
您真的很接近正确答案。您需要定义通用接口,枚举应使用枚举的类来扩展它,如下所示:
enum class MyEnum : EnumInterface<MyEnum> {
A,B,C;
override fun valuesInternal() = MyEnum.values()
}
interface EnumInterface<T> {
fun valuesInternal():Array<T>
fun doStuff() {
this.valuesInternal()
}
}