После некоторого копания я думаю, что нашел способ.Сначала я создаю черту, которая сохранит тип актера
trait TypedActorRef[T <: Actor] {
def reference: ActorRef
type t = T
}
Затем реализую универсальное приложение, которое создает частный класс case, расширяющий черту
object TypedActorRef {
private case class Ref[T <: Actor] (reference: ActorRef) extends TypedActorRef[T]
def apply[T <: Actor](actor: T) = {
Ref[T](actor.self)
}
}
С этим я могу сохранить ссылкукоторый ограничен актером типа, который я хочу.
trait OtherActor extends Actor
trait MyActor extends Actor
{
def otherActorsReference: TypedActorRef[OtherActor]
}
Мне кажется, это нормально, по крайней мере, это не расстраивает компилятор, но я не уверен, мешает ли это решение создавать другие расширенияTypedActorRef, который может не соответствовать тем же ограничениям.