如果我定义一个包对象
package com.something.else
package object more {
val time = System.currentTimeMillis
// ... other stuff ...
}
然后将其导入源代码中的某个位置。
import com.something.else.more
该对象(及其成员)何时初始化/构造?
换句话说,什么决定了价值more.time
?
程序第一次启动时是否对其进行评估?或者第一次访问时?或者第一次more
被访问?
很容易检查:
package something
package object more {
val time = System.currentTimeMillis
}
// in separate file:
package something.more
object Test extends App {
val now = System.currentTimeMillis
Thread.sleep(1000)
println(now)
println(time)
}
gives:
1339394348495
1339394349496
第二次是大约 1000 毫秒后,所以这是第一次访问包对象的时候,就像访问任何其他对象一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)