如何在kotlin中创建一个空数组?

hua*_*gcd 67 arrays kotlin

Array(0, {i -> ""})目前正在使用,我想知道是否有更好的实现,如Array()

另外,如果我正在使用arrayOfNulls<String>(0) as Array<String>,编译器会提醒我这个演员阵容永远不会成功.但它是内部的默认实现Array(0, {i -> ""}).我错过了什么吗?

Mar*_*sey 92

截至2015年6月底,还有Kotlin标准库功能

public fun <T> arrayOf(vararg t: T): Array<T>
Run Code Online (Sandbox Code Playgroud)

因此,要创建一个空数组的字符串,您可以编写

val emptyStringArray = arrayOf<String>()
Run Code Online (Sandbox Code Playgroud)

  • 这些方法的目的是什么?因为我们无法分配大小所以我们无法分配值或获取.array [0] throw`java.lang.ArrayIndexOutOfBoundsException:`exception. (4认同)
  • 像“IntArray”这样的类型化数组呢?现在我正在使用`arrayOf&lt;Int&gt;().toIntArray()`,有什么更好的方法吗? (2认同)
  • @csharpfolk,你可以使用 intArrayOf() 来初始化一个空的 IntArray (2认同)

pt2*_*121 34

仅供参考,还有emptyArray.例如,

var arr = emptyArray<String>()
Run Code Online (Sandbox Code Playgroud)

看到

  • 它是一个空数组,你不能添加/读取任何内容.它可能看起来没用,但有时你必须在某处传递一个数组,这允许你轻松地构造一个空数组. (8认同)
  • 这比 Martian Odyssey 的答案要好,因为在数据类中用于初始化数组时,arrayOf 会导致 java.util.concurrent.ExecutionException 而 emptyArray() 不会。 (2认同)

Mir*_*ili 7

空还是null?就是那个问题!

要创建的数组null,只需使用arrayOfNulls<Type>(length)


但是要生成一个的size数组length,请使用:

val arr = Array(length) { emptyObject }
Run Code Online (Sandbox Code Playgroud)

注意:必须emptyObject为每种类型正确定义一个(因为您不希望这样null)。例如 对于StringemptyObject可以是""。所以:

val arr = Array(3) { "" }  // is equivalent for: arrayOf("","","")
Run Code Online (Sandbox Code Playgroud)

是一个生动的例子。请注意,默认情况下,该程序使用两个示例参数运行。


Ali*_*san 5

null数组

var arrayString=Array<String?>(5){null}
var nullArray= arrayOfNulls<String>(5)
Run Code Online (Sandbox Code Playgroud)