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

时间:2014-05-16 21:24:08

标签: scala companion-object

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

伴侣对象:

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

Companion class:它 import 伴随对象方法:

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 => {

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

更新我对此有点怀疑,所以继续并注释掉了#34; import MarkerActor。"这导致"未找到符号:停止"伴侣班中的错误。所以..导入确实是必需的。

1 个答案:

答案 0 :(得分:16)

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