Enum.valueOf在Kotlin

有没有办法像Kotlin这样的工作,没有反思呢?

inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: String?): T? { return java.lang.Enum.valueOf(T::class.java, type) } 

下面的例子不能编译,因为:

inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: kotlin.String?): T?绑定T的类型参数inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: kotlin.String?): T? 不满意:推断类型TestEnum? 不是kotlin.Enum<TestEnum?>的子类型

 enum class TestEnum fun main() { val value: TestEnum? = safeValueOf("test") } 

如果您明确指定了类型参数值,则您的函数可以工作:

 val value = safeValueOf<TestEnum>("test") 

原始代码应该可以正常工作,但是由于类型推断实现中的错误而无法工作: https : //youtrack.jetbrains.com/issue/KT-11218