Class Kotlin为枚举类值方法定义接口
如果我定义了一个枚举类,那么假设:Class Kotlin为枚举类值方法定义接口,class,kotlin,enums,interface,Class,Kotlin,Enums,Interface,如果我定义了一个枚举类,那么假设: enum class MyEnum { } 我可以执行以下操作,因为枚举类都有一个values方法: val values = MyEnum.values() 现在,我希望我的枚举实现一个接口,并可以访问values()方法: enum类MyEnum:EnumInterface{} 接口枚举接口{ fun values():数组 fundostuff(){ 这个值是() } } 这不会编译,我知道如何键入values方法。是否可以定义这样的接口?谢谢 你
enum class MyEnum { }
我可以执行以下操作,因为枚举类都有一个values
方法:
val values = MyEnum.values()
现在,我希望我的枚举实现一个接口,并可以访问values()方法:
enum类MyEnum:EnumInterface{}
接口枚举接口{
fun values():数组
fundostuff(){
这个值是()
}
}
这不会编译,我知道如何键入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()
}
}
枚举类MyEnum:EnumInterface{
A、 B,C;
重写fun valuesInternal()=MyEnum.values()
}
接口枚举接口{
fun valuesInternal():数组
fundostuff(){
此.valuesInternal()
}
}
感谢您的回复!MyEnum为空时,它会编译,但不幸的是,在添加case时,它不会编译。我希望避免valuesInternal()实现,但它完成了任务,谢谢!)@lorenzo遗憾的是,您不能将值作为覆盖方法,这就是它无法工作的原因。
enum class MyEnum : EnumInterface<MyEnum> {
A,B,C;
override fun valuesInternal() = MyEnum.values()
}
interface EnumInterface<T> {
fun valuesInternal():Array<T>
fun doStuff() {
this.valuesInternal()
}
}