Функция расширения в перечислителе, `values ​​()` недоступна?

Если я попытаюсь ввести:

enum class EGraphicsAPIConvention(@get:JvmName("i") val i: Int) { API_DirectX(0), API_OpenGL(1) } fun EGraphicsAPIConvention.of(i: Int) = values().first { it.i == i } 

Компилятор жалуется:

неразрешенные ссылочные значения

this.values() не помогает ни

Почему у меня нет values() ?

fun EGraphicsAPIConvention.of(i: Int) добавляет метод расширения ко всем экземплярам EGraphicsAPIConvention чтобы вы могли написать EGraphicsAPIConvention. API_DirectX.of(1) EGraphicsAPIConvention. API_DirectX.of(1) .

В настоящее время Kotlin не предоставляет способ записи функции расширения на уровне класса.

Однако вы можете использовать companion object для получения желаемого поведения следующим образом:

 enum class EGraphicsAPIConvention(@get:JvmName("i") val i: Int) { API_DirectX(0), API_OpenGL(1); companion object { fun of(i: Int) = values().first { it.i == i } } } 

И затем используйте его: EGraphicsAPIConvention.of(0)