lor*_*nzo 3 enums interface class kotlin
如果我定义一个枚举类,让我们说:
enum class MyEnum { }
我可以执行以下操作,因为枚举类都有一个values方法:
val values = MyEnum.values()
现在我希望我的枚举实现一个接口并可以访问 values() 方法:
enum class MyEnum : EnumInterface { }
interface EnumInterface {
    fun values() : Array<T>
    fun doStuff() {
        this.values()
    }
}
这不会编译,我确定如何键入 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()
    }
}