如果我尝试键入:
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)
正在将an extension method添加到所有EGraphicsAPIConvention
实例,以便您可以编写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)