2011-12-08 21 views
7

Si quería que mi proyecto Scala fuera "compatible" con Java, es práctico llamar a la API de Scala desde el código Java (para que los programadores no Scala también puedan contribuir), ¿sería posible utilizar el Proyecto Lombok en el código de Java? ¿O los dos no se llevan bien?¿El Proyecto Lombok funciona bien con Scala?

Estaría desarrollando en Eclipse con el IDE de Scala.

EDITAR: Lo que realmente quise decir fue: ¿el editor de Scala en Eclipse verá el código generado por Lombok, o simplemente el código de Java que escribí realmente?

+1

En cuanto a su edición y mi completa falta de conocimiento sobre Eclipse, lo que funcionará obviamente es cuando está utilizando su código compilado de Java como biblioteca. Entonces su pregunta solo es interesante para proyectos mixtos, no para mezclar bibliotecas. – ziggystar

Respuesta

9

No estoy seguro de lo que está preguntando, ya que Scala y Java son interoperativos en el nivel de bytecode, no importa de dónde provenga el bytecode. Así que creo que el código de Java que utiliza la anotación de Lombok aún se puede invocar desde el programa Scala.

Y si usted está preguntando si esas anotaciones que proporcionó Lombok podrían usarse en el código de Scala, no veo sentido, porque la mayoría de esas características son proporcionadas por Scala itsef.

Por ejemplo, una clase con @Data podría ser case class en Scala.

case class Data(name: String, value: Int) 

Y se podía acceder a ella en código Java como una clase normal.

Data d1 = new Data("someData", 1); // Using constructor 
Data d2 = Data.apply("someData", 1); // Or using factory 

Y Data tendrá todo maravilloso toString, equals, hashcode .... etc.

+0

+1 No estaba pensando en eso de esta manera, pero responde la mitad de mi pregunta. Especificaré lo que quiero editando la pregunta. –

+0

En realidad, debería haberlo pensado antes de preguntar. Mala pregunta. –

9

La parte del editor scala 'verá' el código generado correctamente.

La mayor parte de lo que lombok hace sigue una u otra especificación, igual que scala. Cuando se desvía Lombok es canEqual y es igual a implementaciones, que por cierto es la exacta mismo Scala genera para las clases de casos IIRC, por lo que incluso que sea compatible :)

RENUNCIA: Soy un contribuyente principal a Lombok proyectar.

+0

Hmm, actualmente tengo problemas con mi código scala-test al no encontrar mi constructor generado por @RequiredArgsConstructor. Me pregunto si eso es un problema en mi configuración o un error. – eduardohl

+1

Acabo de resolverlo, era un problema con Eclipse compilando el código Scala antes del código Java, para cambiarlo: Preferencias >> Scala >> Compilador >> Ficha BuildManager >> Cambiar compileOrder de Mixto a JavaThenScala – eduardohl

+0

@rzwitserloot En situaciones donde el caso Scala las clases tienen la anotación '@ Data' en ellos, ¿recomendarían usar Javac sobre Eclipsec para la compilación de dicho código? –

Cuestiones relacionadas