我正在查看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。"这导致"未找到符号:停止"伴侣班中的错误。所以..导入确实是必需的。
答案 0 :(得分:16)
几年前,有人讨论过是否将所有伴随对象成员隐式导入其父类。当时做出的决定,今天仍然有意义,是要求显式导入,因为添加额外的导入比删除不需要的导入更容易。 Here is the full discussion