私は Akka 関連の typesafe アクティベーター コードを調べており、次の構造に興味をそそられました。
コンパニオン オブジェクト:
object MarkerActor {
sealed trait MarkerMessage
case object Stop extends MarkerMessage
..
def objectMethod = print("hi from companion object")
}
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 => {
だから..それは少し驚くべきことです。クラスがオブジェクトメソッドを自動的に「見る」ことを可能にするコンパニオンクラス/オブジェクト間に「特別な関係」がないのはなぜですか?
更新 私はこれに少し懐疑的だったので、先に進んで「import MarkerActor._」をコメントアウトしました。これにより、Companion クラスで「Symbol not found: Stop」エラーが発生しました。だから..インポートは本当に必要です。