2010-12-29 17 views

Respuesta

4

Quizás esto haya cambiado a partir de Scala 2.8.1, pero el domain$Foo$.MODULE$ propuesto no funciona. Tienes que usar domain.package$Foo$.MODULE$.

Y es un poco diferente para los objetos, métodos, etc. Teniendo en cuenta la clase Scala:

package object domain { 
    object foo 
    def bar = 42 
    val baz = 1.0 
} 

Puede acceder foo, bar y baz en Java como:

domain.package$foo$.MODULE$ 
domain.package$.MODULE$.bar() 
domain.package$.MODULE$.baz() 

Mientras estaba tratando de resolver esto, pensé que estábamos en problemas porque Scala genera una clase llamada package, que por supuesto no se puede importar en Java. Afortunadamente, solo necesitamos el objeto complementario package$, que puede importar.

0

Si observa un objeto en un objeto en la biblioteca de Scala, p. Ej. scala.math.Ordering.Boolean, puede obtenerlo de Java usando scala.math.Ordering$Boolean$.MODULE$. No veo ninguna razón por la que los objetos del paquete no se comporten como objetos normales en este sentido, por lo que su instancia Foo debería ser domain$Foo$.MODULE$

Cuestiones relacionadas