在将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的值不为空吗?