web-dev-qa-db-ja.com

Kotlin:nullはnull以外の型kotlinの値にはできません

KotlinでArrayListにnull値を割り当てる方法は?

そのようなカスタムArrayListにnull値を追加しようとしています

var mList = ArrayList<CustomClass>()
mList.add(null)

Javaで可能ですが、Kotlinでこれをどのように実現できますか?

nullをnull以外の型kotlinの値にすることはできません

RecyclerViewでより多くの機能をロードするにはnull値を挿入する必要があります

11
Mohit Suthar

次に、このように記述する必要があります。

var mList = ArrayList<CustomClass?>()
mList.add(null)

?を使用するとnull値を入力できるため、ArrayListのタイプの後に?を追加する必要があります。

14
Avijit Karmakar

Kotlinの型システムは、null許容型と非null型を区別します。たとえば、単純なString変数を宣言し、コンパイラにその型を推測させると、nullを保持できなくなります。

_var a = "text" //inferred type is `String`
a = null //doesn’t compile!
_

一方、変数がnullも指すことができるようにしたい場合は、型に疑問符で明示的に注釈を付けます。

_var a: String? = "text"
a = null //Ok!
_

あなたの例では、ArrayListはジェネリック型CustomClassで宣言されており、nullにすることはできません。代わりにnull許容型_CustomClass?_を使用する必要があります。また、リストのインスタンスを作成するための Kotlinの標準ライブラリ関数 を利用できます(できればread-onlyのもの)。

_var mList = listOf<CustomClass?>(null)
_

それ以外の場合は、mutableListOf()またはarrayListOf()も役立ちます。

6
s1m0nw1