¿Cómo acceder a un objeto Foo
contenido en un objeto de paquete scala de Java?¿Cómo acceder a un objeto Foo contenido en un objeto de paquete scala de Java?
package object domain { object Foo } domain$.MODULE$.Foo$.MODULE$
¿Cómo acceder a un objeto Foo
contenido en un objeto de paquete scala de Java?¿Cómo acceder a un objeto Foo contenido en un objeto de paquete scala de Java?
package object domain { object Foo } domain$.MODULE$.Foo$.MODULE$
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.
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$