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