科特林对象。哪种初始化方式是正确的?
Kotlin object. Which way of initialization is right?
对象的初始化有什么区别吗?
时间字段会有不同的行为还是与 Java 中的行为相同(拆分声明和初始化)?谢谢
object DataHolder {
val time : MutableList<Long>
init {
time = arrayListOf()
} ...
还有这个
object DataHolder {
val time = arrayListOf<Long>() ....
通常在赋值或 init
块中 属性 初始化之间没有任何区别。您可以使用 javap
工具检查生成的字节码,发现它在两种情况下完全相同,模数行号。
然而,在您的示例中,即使从源代码的角度来看也存在差异:在第一个示例中,time
的类型声明为 MutableList<Long>
,但在第二个示例中,其类型为未明确指定,因此它具有分配给它的表达式类型。 arrayListOf<T>
returns ArrayList<T>
,所以time
在第二种情况下的类型是ArrayList<Long>
。如果您在第二个示例中将 MutableList<Long>
指定为 time
的类型,那么实际上生成的输出将是相同的。
对象的初始化有什么区别吗? 时间字段会有不同的行为还是与 Java 中的行为相同(拆分声明和初始化)?谢谢
object DataHolder {
val time : MutableList<Long>
init {
time = arrayListOf()
} ...
还有这个
object DataHolder {
val time = arrayListOf<Long>() ....
通常在赋值或 init
块中 属性 初始化之间没有任何区别。您可以使用 javap
工具检查生成的字节码,发现它在两种情况下完全相同,模数行号。
然而,在您的示例中,即使从源代码的角度来看也存在差异:在第一个示例中,time
的类型声明为 MutableList<Long>
,但在第二个示例中,其类型为未明确指定,因此它具有分配给它的表达式类型。 arrayListOf<T>
returns ArrayList<T>
,所以time
在第二种情况下的类型是ArrayList<Long>
。如果您在第二个示例中将 MutableList<Long>
指定为 time
的类型,那么实际上生成的输出将是相同的。