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)
- Android室 – 简单的选择查询 – 无法访问主线程上的数据库
- Android Studio + Spek集成
- Android Studio 3.0:Canary 6:android.content.res.Resources $ NotFoundException里面的启动活动
- Android 3.0 Canary 5布局编辑器问题
- 如何将一个字符串传递给Kotlin中没有转义符号的variables?
- Android Studio 3 Kotlin版本
- 如何在Android Studio 3.0 beta 5中创建一个Android项目?
- 在Kotlin中构建GridView时无法传递Context
- Gradle无法解析来自另一个模块的引用