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