Kotlin 科特林物体。哪种初始化方式是正确的?

Kotlin 科特林物体。哪种初始化方式是正确的?,kotlin,Kotlin,对象的初始化之间有什么区别吗? 时间字段会有不同的行为,还是与Java(分割声明和初始化)中的行为相同?谢谢 对象数据持有者{ val时间:可变列表 初始化{ 时间=arrayListOf() } ... 还有这个 object DataHolder { val time = arrayListOf<Long>() .... 对象数据持有者{ val time=arrayListOf()。。。。 通常,赋值或init块中的属性初始化之间没有任何区别。您可以使用javap工具检查

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

对象数据持有者{
val时间:可变列表
初始化{
时间=arrayListOf()
} ...
还有这个

object  DataHolder {
val time = arrayListOf<Long>() ....
对象数据持有者{
val time=arrayListOf()。。。。

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

然而,在您的示例中,即使从源代码的角度来看,也存在差异:在第一个示例中,
time
的类型被声明为
MutableList
,但在第二个示例中,它的类型没有显式指定,因此它具有指定给它的表达式的类型。
arrayListOf
返回
ArrayList
,因此,在第二种情况下,
time
的类型是
ArrayList
。如果在第二个示例中将
MutableList
指定为
time
的类型,那么生成的输出实际上是相同的

object  DataHolder {
val time = arrayListOf<Long>() ....