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)