Scala Lazy Val Question
Eu tenho um cenário em que tenho alguns objetos que precisam incluir referências um do outro. A única maneira de conseguir isso para compilar é usarpreguiçoso
class A(b:B)
class B(a:A)
lazy val a:A = new A(b)
lazy val b:B = new B(a)
Eu posso fazer a mesma coisa usando alguns atores e compilar também
abstract class Message
case class Message1 extends Message
case class Message2 extends Message
class Actor1(otherActor:Actor) extends Actor {
def act() {
loop {
react {
case Message1 =>
println("received message1")
otherActor ! Message2
case _ =>
}
}
}
}
class Actor2(otherActor:Actor) extends Actor {
def act() {
loop {
react {
case Message2 =>
println("received message2")
otherActor ! Message1
case _ =>
}
}
}
}
lazy val actor1:Actor = new Actor1(actor2)
lazy val actor2:Actor = new Actor2(actor1)
No entanto, quando adiciono o seguinte:
actor1.start
actor2.start
actor1 ! Message1
Estou tendo o erro a seguir:
Exceção no encadeamento "main" java.lang.NoClassDefFoundError: com / fictitiousCompany / stackOverflowQuestion / Test Causado por: java.lang.ClassNotFoundException: com.fictitiousCompany.stackOverflowQuestion.Test em java.net.URLClassLoader $ 1.run (U. ) em java.security.AccessController.doPrivileged (método nativo) em java.net.URLClassLoader.findClass (URLClassLoader.java:190) em java.lang.ClassLoader.loadClass (ClassLoader.java:307) em sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) e java.lang.ClassLoader.loadClass (ClassLoader.java:248)
Estou usando o Scala Eclipse Plugin 2.8.1.