Kotlin中的emptyArray()有什么用处

我在Kotlin学习emptyArray() ,但是我不能在其中赋值(这是显而易见的),我也不能设置它的大小。 Kotlin中emptyArray的用法是什么?

emptyArray()函数返回一个大小为0的空数组。它不包含任何参数(不是大小,也不是任何元素)。 您可以在赋值操作中将它用作右值。 您可以使用空数组来转储预先存在的数组中的所有值,并将其大小设置为0.注意:最好返回一个空值,而不是返回一个空数组,因为它不会创建任何空点异常进一步操作。

 var array=arrayOf(1,2,3,4,5); array = emptyArray() //The array datais dumped and size is set to 0; array = arrayOf(0,1,2) 

java.util.Collections.emptyList()方法及其对应的Maps类似,这些方法在调用以数组/集合为参数的方法时非常方便,但您不需要提供该集合中的任何元素。 您可以实例化一个新的空数组/集合或使用其中一个辅助方法。

如果上面的用例在您的场景中非常常见,那么您通过使用助手来保存内存,因为始终重复使用同一个实例,而不是一次又一次地创建新实例。 否则,它主要是“语法糖果”,使您的代码更易读易懂。

有些情况下,您想要回退到空数组或空列表。 例如:

 return someInputArray?.filterNotNull() ?: emptyArray() 

在这种情况下,如果我有一个有效的输入数组,我筛选出null值,否则,如果源数组为null我返回一个空数组。 因此数组总是返回而不是null 。 空列表和数组可能比在Kotlin中传递可空列表或数组更常见。

所以是的,它是空的,你不能添加到它,就像没有JVM数组是可扩展一旦分配。

数组是固定大小的容器。 emptyArray()函数创建一个0长度的数组,你真的不能用这个做很多事情。 你不能存储任何东西,你不能调整它的大小。

您需要一个空数组的常见用例将作为将在稍后设置为不同数组的属性的默认值。 这可以比默认情况下在该属性中存储null更好,因为在代码使用数组时,您不必处理可能的null值。 例如,您可以安全地遍历一个空数组。


举一个简单的例子:

 class NumberHolder { var numbers: Array<Int> = emptyArray() fun printNumbers() { numbers.forEach { println(it) } } } 

这个类的用法看起来像这样:

 val nh = NumberHolder() nh.printNumbers() // prints nothing nh.numbers = arrayOf(1, 2, 3) nh.printNumbers() // prints 1, 2, and 3 on separate lines