Kotlin数组创建:没有传递参数' init'

时间:2018-02-01 14:47:00

标签: kotlin android-studio-3.0 kotlin-android-extensions

我正在将一个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的新手,所以我无法弄清楚为什么会这样?

2 个答案:

答案 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)