【发布时间】:2017-06-25 08:02:33
【问题描述】:
如何在 Kotlin 中处理可为空的泛型 Class 类型?
带有泛型的示例函数:
fun <I> calculateStuff(valueType: Class<I>, defaultValue: I): I {
// do some work
return defaultValue;
}
这是一个调用函数(注意 calculateStuff(...) 的第二个参数)
fun doStuff() {
// works fine!
val myVar1 = calculateStuff(String::class.java, "")
// FAIL (null is not accepted... Error: "Cannot infer type parameter I in....")
val myVar2 = calculateStuff(String::class.java, null)
}
解决方法(将返回类型更改为 I?并将 defaultValue 更改为 I?):
fun <I> calculateStuff(valueType: Class<I>, defaultValue: I?): I? {
return defaultValue;
}
首选方法,但 Kotlin 似乎不支持(注意“String?::class.java”):
val myVar2 = calculateStuff(String?::class.java, null)
我真的希望能够向方法 (calculateStuff(...)) 发送返回类型,如果它可以为 null,则作为第一个参数...这样我只需要对如果我在第一个参数中传递一个可为空的类,则返回值。
这可以在 Kotlin 中实现吗?
【问题讨论】:
标签: kotlin