我正在查看与 Akka 相关的类型安全激活器代码,以下构造引起了我的兴趣:
伴侣对象:
object MarkerActor {
sealed trait MarkerMessage
case object Stop extends MarkerMessage
..
def objectMethod = print("hi from companion object")
}
伴生类:它导入伴生对象方法:
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 => {
所以..这有点令人惊讶。为什么伴随类/对象之间没有“特殊关系”允许类自动“看到”对象方法?
更新 我对此有点怀疑,所以继续注释掉“import MarkerActor._”这导致 Companion Class 中出现“Symbol not found: Stop”错误。所以..确实需要导入。