如果我定义一个包对象
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)
}
给出:
1339394348495
1339394349496
第二次是大约1000毫秒之后,因此是第一次访问包对象时,与其他任何对象一样。
关于scala - 包对象何时初始化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10973692/