Kotlin不可空泛型

时间:2018-09-10 14:54:53

标签: android kotlin null

在将null添加到不可为null的类型的集合中时,我遇到了一个特殊问题。

最好通过以下代码示例进行说明:

val a = LongSparseArray<String>()
a.put(1L, null)
a.toArrayList().filterNotNull()
// bad - no error, but warns that "filterNotNull" is a "Useless call on collection type", when it clearly isn't

val b = LongSparseArray<String?>()
b.put(1L, null)
b.toArrayList().filterNotNull()
// good

val c = HashMap<Long, String>()
c.put(1L, null)
// compilation error - good

val d = HashMap<Long, String?>()
d.put(1L, null)
// good

当使用一些String的集合(SparseArray,LongSparseArray)时,我可以自由添加null,而Kotlin的null安全性不会被接受。使用其他(HashMap)时,除非我使用String?类型。

有人知道我如何确保LongSparseArray的值不为空吗?

0 个答案:

没有答案