如果我定义一个包对象
package com.something.else
package object more {
val time = System.currentTimeMillis
// ... other stuff ...
}
Run Code Online (Sandbox Code Playgroud)
然后在源代码中的某处导入.
import com.something.else.more
Run Code Online (Sandbox Code Playgroud)
该对象(及其成员)何时初始化/构建?
换句话说,什么决定了价值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)
}
Run Code Online (Sandbox Code Playgroud)
得到:
1339394348495
1339394349496
Run Code Online (Sandbox Code Playgroud)
第二次是大约1000毫秒后,所以它是第一次访问包对象时,就像任何其他对象一样.
归档时间: |
|
查看次数: |
348 次 |
最近记录: |