Companion类需要导入Companion对象方法和嵌套对象吗?

jav*_*dba 12 scala companion-object

我正在查看Akka相关的类型安全激活器代码,以下构造引起了我的兴趣:

伴随对象:

object MarkerActor {
  sealed trait MarkerMessage
  case object Stop extends MarkerMessage
   ..
  def objectMethod = print("hi from companion object")
}
Run Code Online (Sandbox Code Playgroud)

Companion类:它导入伴随对象方法:

class MarkerActor extends Actor with ActorLogging {
    import MarkerActor._   // Comment this line to compare w or w/o import available

    objectMethod  // just to see if 'visible' within companion class

    override def receive = {
      case Stop => {
Run Code Online (Sandbox Code Playgroud)

所以...这有点令人惊讶.为什么同伴类/对象之间没有"特殊关系",允许类自动"看到"对象方法?

更新 我对此有点怀疑,所以继续并注释掉"import MarkerActor._"这导致Companion类中出现"Symbol not found:Stop"错误.所以..导入确实是必需的.

Chr*_*ris 17

几年前,讨论过是否将所有伴随对象成员隐式导入其父类.当时做出的决定,今天仍然有意义,是要求显式导入,因为添加额外的导入比删除不需要的导入更容易.这是完整的讨论.