对象初始化之间有什么区别吗?时间字段会有不同的行为,还是与Java(拆分声明和初始化)中的相同?谢谢
object DataHolder {
val time : MutableList<Long>
init {
time = arrayListOf()
} ...
Run Code Online (Sandbox Code Playgroud)
还有这个
object DataHolder {
val time = arrayListOf<Long>() ....
Run Code Online (Sandbox Code Playgroud)
通常,在赋值或init块中的属性初始化之间没有任何区别.您可以使用该javap工具检查生成的字节码,以找出它在两种情况下都是完全相同的,模数行号.
然而,在您的示例中,甚至有从源代码透视的差:在第一样品time的类型被声明为MutableList<Long>,但第二个样品中的其类型没有明确规定,因此它具有分配给它的表达式的类型.arrayListOf<T>返回ArrayList<T>,所以time在第二种情况下的类型是ArrayList<Long>.如果在第二个示例中指定MutableList<Long>为times类型,那么生成的输出确实是相同的.
| 归档时间: |
|
| 查看次数: |
4146 次 |
| 最近记录: |