包对象什么时候初始化?

2024-01-08

如果我定义一个包对象

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(使用前将#替换为@)

包对象什么时候初始化? 的相关文章

随机推荐