2
我最近遇到了安全导航操作员(?.
)和仿制药的问题。Kotlin类型与仿制药不匹配
class A<T : Any?>(private var value: T) {
fun function() {
value?.let {
val notNull: Any = it
// ^^
// Type mismatch:
// Required: Any
// Found: T
}
}
}
我相信上面的代码应该没有问题运行,但它会产生上面显示的错误。我错过了什么吗?
尽管传递给let的块只在值不为空的情况下执行,它仍然是块内的T型。所以你可以赋值给Any类型的变量,但不赋给Any类型的变量。 –
@JBNizet所以我可以肯定它不是空的,只是施展它? – Mibac
是的,你可以做到这一点。但我不明白为什么你的方法是通用的。 –