有没有办法在没有反射的情况下在 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绑定的类型参数不满足:推断类型TestEnum?
不是kotlin.Enum<TestEnum?>
的子类型
enum class TestEnum
fun main() {
val value: TestEnum? = safeValueOf("test")
}
原文由 AndroidEx 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您明确指定类型参数值,您的函数将起作用:
原始代码应该也能正常工作,但由于类型推断实现中的错误而无法正常工作: https ://youtrack.jetbrains.com/issue/KT-11218