如何在没有初始化和特定数量的元素的情况下在Kotlin中创建对象数组?

时间:2018-03-31 22:21:20

标签: java arrays object kotlin

我想在Kotlin中创建一个具有特定数量元素的对象数组,问题是我现在不是声明中每个对象初始化的当前值,我试过:

var miArreglo = Array<Medico>(20, {null})
在Java中,我有这个,这正是我想要的,但我需要它在Kotlin。 :

Medico[] medicos = new Medico[20];

for(int i = 0 ; i < medicos.length; i++){
    medicos[i] = new Medico();

}

上述Java代码的Kotlink等价物是什么?

另外,我尝试过:

var misDoctores = arrayOfNulls<medic>(20)

for(i in misDoctores ){
    i = medic()
}

但我在Android Studio上向我显示了这样的信息:&#34; Val无法重新分配&#34;

2 个答案:

答案 0 :(得分:10)

Kotlin等同于此:

val miArreglo = Array(20) { Medico() }

但我强烈建议你在Kotlin中使用Lists因为它们更灵活。在你的情况下,List不需要是可变的,因此我会建议这样的事情:

val miArreglo = List(20) { Medico() }

上面的两个片段很容易解释。第一个参数显然是 ArrayList大小,就像在Java中一样,第二个参数是lambda函数,它是init { ... }函数。 init { ... }函数可以包含某种操作,最后一个值将始终是返回类型和返回值,即在这种情况下是Medico对象。

我还选择使用val代替var,因为ListArray不应该重新分配。如果您想修改List,请改为使用MutableList

val miArreglo = MutableList(20) { Medico() }

您可以编辑此列表,例如:

miArreglo.add(Medico())

答案 1 :(得分:1)

如果您想要可为空的对象列表,我们可以做类似的事情

val fragment : Array<Fragment?> = Array(4) { null }