Kotlin对象。 哪种方式的初始化是正确的?

对象初始化有什么区别吗? 时间字段会有不同的行为还是只是在Java(拆分声明和初始化)相同? 谢谢

object DataHolder { val time : MutableList init { time = arrayListOf() } ... 

和这个

 object DataHolder { val time = arrayListOf() .... 

一般而言,在赋值或init块中的属性初始化之间完全没有区别。 您可以使用javap工具检查生成的字节码,以发现在这两种情况下模数行数完全相同。

然而在你的例子中,甚至从源代码的角度来看也是有区别的:在第一个采样time的types被声明为MutableList ,但是在第二个采样中它的types没有明确指定,所以它的types分配给它的expression式。 arrayListOf返回ArrayList ,所以第二种情况下的timetypes是ArrayList 。 如果在第二个例子MutableList指定为timetypes,那么实际上生成的输出将是相同的。