Kotlin数组创建:参数“init”没有值传递

我正在Android Studio中将Java文件转换为Kotlin,并且出现此错误:

参数“init”没有传递值

我通过添加lateinit稍微修改了代码

java代码是:

private TextView[] dots; private int[] layouts; private void addBottomDots(int currentPage) { dots = new TextView[layouts.length]; //some lines here } 

而相应的Kotlin代码是

 private lateinit var dots: Array private lateinit var layouts: IntArray private fun addBottomDots(currentPage: Int) { dots = Array(layouts.size) // error happens here // some lines here } 

因为我是Kotlin的新手,我不明白为什么这是原因

代码是不相同的。 您的原始代码实际上表示typesvar dots: Array因为数组的值可能未初始化。

由于您将其定义为非null,因此Array的唯一可用构造函数需要一个函数将所有元素初始化为非空值。 你可以提供这个或更改types为空,并使用dots = arrayOfNulls(layouts.size)

检查数组构造函数: public inline constructor(size: Int, init: (Int) -> T) – 这就是错误发生的原因。

猜猜你想创建ArrayList

 dots = ArrayList(layouts.size)