我正在将一个Java文件转换为Android Studio中的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<TextView>
private lateinit var layouts: IntArray
private fun addBottomDots(currentPage: Int)
{
dots = Array<TextView>(layouts.size) // error happens here
// some lines here
}
因为我是Kotlin的新手,所以我无法弄清楚为什么会这样?
答案 0 :(得分:3)
代码不相同。您的原始代码实际上代表类型var dots: Array<TextView?>
,因为数组的值可能未初始化。
因为您将其定义为非null,Array
唯一可用的构造函数需要一个函数将所有元素初始化为非null值。您可以提供此项或将类型更改为可为空,并使用dots = arrayOfNulls(layouts.size)
答案 1 :(得分:1)
检查数组构造函数:public inline constructor(size: Int, init: (Int) -> T)
- 这就是错误发生的原因。
猜猜你想要创建ArrayList
dots = ArrayList<TextView>(layouts.size)