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)
- Kotlingenericstypes,types推断失败
- 在kotlin如何做即时应用功能?
- 如果活动写在Kotlin中,Button onClick属性是none
- 为什么在AndroidStudio 3.0中运行kotlin测试非常慢?
- 如何在Android Studio 3.0.0中使用数据绑定和Kotlin
- 如果活动写在Kotlin中,Button onClick属性是none
- android studio 3.0中的Kotlin-android和kotlin-android-extensions之间的区别
- Android Studio自动完成吐司(Kotlin)的快捷方式
- Android Studio 3.0 Kotlin无法正常工作