如果我定义包对象
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毫秒以后,所以它的当首次访问的包对象,因为这将是与任何其他物体。