Kotlin определяет интерфейс для метода значений класса enum - PullRequest
0 голосов
/ 14 мая 2019

если я определю класс enum, скажем:

enum class MyEnum { }

Я могу сделать следующее, поскольку у класса enum есть метод values:

val values = MyEnum.values()

Теперь я хочуМое перечисление для реализации интерфейса и доступа к методу values ​​():

enum class MyEnum : EnumInterface { }

interface EnumInterface {
    fun values() : Array<T>

    fun doStuff() {
        this.values()
    }

}

Это не компилируется, и я уверен, как набрать метод values.Можно ли определить такой интерфейс?Спасибо!

1 Ответ

2 голосов
/ 14 мая 2019

Вы были действительно близки к правильному ответу. Вам нужно определить универсальный интерфейс, и вы должны расширить его, набирая его с помощью класса 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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...