ジェネリック型のプロパティが null 許容なのはなぜですか? 質問する

ジェネリック型のプロパティが null 許容なのはなぜですか? 質問する

lateinitジェネリック型の非 null 値プロパティを持つパラメーター化されたクラスを作成しようとしています。

class Test<T> {

   private lateinit var t : T

   private lateinit var s : String

}

後者は許可されますが、前者は許可されません。コンパイラは次のエラーを返します。

エラー:(7, 11) ''lateinit'' 修飾子は null 許容プロパティでは許可されません

申告していなかったのにT?、なぜそうなるのかわかりません。

ベストアンサー1

デフォルトの上限(指定されていない場合)はAny?ソース

言い換えれば、 を使用するとT、Kotlinはこれがどれでも型は、プリミティブ、オブジェクト、または null 許容参照のいずれかです。

これを修正するには、上位タイプを追加します。

class Test<T: Any> { ... }

おすすめ記事