2
私は最近安全ナビゲーションオペレーター(?.
)とジェネリックスに関する問題を経験しました。コトルタイプのジェネリックとの不一致
class A<T : Any?>(private var value: T) {
fun function() {
value?.let {
val notNull: Any = it
// ^^
// Type mismatch:
// Required: Any
// Found: T
}
}
}
私は上記のコードは問題なく動作しているはずですが、上記のエラーが発生すると思います。何か不足していますか?
letに渡されたブロックは、値がnullでない場合にのみ実行されますが、 'it'はブロック内ではまだT型です。したがって、Any型の変数にはisを代入できますが、Any型の変数には代入できません。 –
@JBNizetので、それがnullではないことを確かめることができますし、それをキャストしますか? – Mibac
はい、そうすることができます。しかし、あなたの方法がなぜ一般的であるのかは分かりません。 –