¿Hay alguna manera de generar fácilmente beans Java con un vector en clojure? Por ejemplo dado un vector de esta manera:generar beans Java con clojure
[
String :key1
Integer :key2
]
me gustaría que para generar un código como éste:
public class NotSureWhatTheTypeWouldBeHere {
private String key1;
private Integer key2;
public NotSureWhatTheTypeWouldBeHere() {}
public NotSureWhatTheTypeWouldBeHere(String key1, Integer key2) {
this.key1 = key1;
this.key2 = key2;
}
public void setKey1(String key1) {
this.key1 = key1;
}
public String getKey1() {
return this.key1;
}
public void setKey2(Integer key2) {
this.key2 = key2;
}
public String getKey2() {
return this.key2;
}
// and equals,hashCode, toString, etc.
}
Para el contexto, me gustaría escribir una aplicación que está escrito en Java, pero llama a una biblioteca escrita en clojure. Eso significa que los valores de retorno deberían ser beans Java (sé que no tienen que serlo, pero me gustaría que lo fueran). Una forma sería definir el modelo en java y luego usar la interoperabilidad java normal de clojure para poblar el modelo en el código de clojure, pero me gusta la idea de un vector de clojure (o mapa) conciso que se expanda a un java (detallado) java.
+1 para usar java.util.Map como clase de interfaz. Además, sugiero usar cadenas como claves: funcionan tan bien como las palabras clave del lado de Clojure, pero son mucho más fáciles de asimilar para los usuarios de la API de Java ... – mikera
esta es probablemente la respuesta correcta, pero pasa por alto el hecho de que específicamente no quiero un mapa en el lado de Java. Tengo una enorme franja de código Java que es service, dao y un montón de objetos modelo. Esperaba poder volver a escribir en Clojure de manera que los objetos del modelo pudieran generarse dinámicamente (reduciendo así el tamaño del código masivamente). Y desde la perspectiva del cliente, el código no es diferente al código original de Java. – Kevin
Te sugiero que comiences a partir de una muestra del código Java cliente como te gustaría que fuera, y luego tratas de encontrar una interfaz común que pueda describir todos los casos que necesites y que puedas 'reificar' desde Clojure. El problema es realmente con tratar de generar beans Java sobre la marcha sin un contrato común con Java. – skuro