C'è un modo per generare facilmente java bean dato un vettore in clojure? Ad esempio dato un vettore come questo:genera java bean con clojure
[
String :key1
Integer :key2
]
mi piacerebbe che per generare il codice come questo:
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.
}
per il contesto, mi piacerebbe scrivere un app che è scritto in Java, ma chiama in una biblioteca scritta in clojure. Ciò significa che i valori di ritorno dovrebbero essere java bean (so che non devono essere, ma mi piacerebbe che fossero). Un modo sarebbe quello di definire il modello in java e quindi usare il normale jop di clojure per popolare il modello nel codice del clojure, ma mi piace l'idea di un vettore (o mappa) conciso di clojure che si espanda verso un java bean (dettagliato).
+1 per l'utilizzo di java.util.Map come classe di interfaccia. Suggerisco inoltre di usare String come chiavi: funzionano altrettanto bene come parole chiave sul lato Clojure ma sono molto più facili da usare per gli utenti dell'API Java .... – mikera
questa è probabilmente la risposta giusta, ma manca il punto che io in particolare non voglio una mappa sul lato java. Ho un'enorme quantità di codice java che è service, dao e un sacco di oggetti modello. Speravo di poter riscrivere in clojure in modo tale che gli oggetti del modello potessero essere generati dinamicamente (riducendo così la dimensione del codice in modo massiccio). E dal punto di vista del cliente, il codice non è diverso dal codice java originale. – Kevin
Ti suggerisco di iniziare da un campione del codice Java client come vorresti che fosse, e quindi provare a trovare un'interfaccia comune che possa descrivere tutti i casi che ti servono e che puoi 'reificare 'da Clojure. Il problema è in realtà con il tentativo di generare Java bean al volo senza un contratto comune con il lato Java. – skuro