convertieren von objekt auf objekt

-AbeAdapti-

Mitglied
Hi,
hät ne relativ banale Frage.
Und zwar muss ich sehr häufig ein Objekt in das andere Konvertieren (teils sind diese Klassen sogar gleich, jedoch in anderen Packages).

Ich möchte nicht ständig das ganze mit getter und setter lösen (besonders nicht wenn die objekte bis zu 30 attribute haben)

gibts da ne schneller Lsg?

Code:
/**
* Am Beispiel eines Viewhelpers
*/
public Object2 transform_Object1_to_Object2(Object1 para) {
                Object2 to = new Object2();
                ...
		to.setCity(para.getCity());
		to.setState(para.getState());
		to.setName(para.getName());
		to.setFirm(para.getFirm());

                return to;
}
 
Das ist ein Problem das ich mir mit Jboss und JiBX geschaffen habe.
JiBX erweitert mit einem precompiler bestehende Objekte und diese werden dann für einen Web Service genutzt. Wenn ich jetzt diese Objekte an andere Projekte weitergeben, kommt später eine IntiationError, da der Webservice diese Objekte unabhängig von allen anderen laden will (und Jboss läd ja jede Klasse nur 1x, außer im isolation Modus).
Und damit das nicht noch weitere ausmasse annimmt, bekommt jetzt jede Architekturschicht sein eigenes Transferobjekt (kompliziert, aber kaum vermeidbar, bei einer strikten Trennung).

an reflection hab ich auch schon gedacht, dachte da aber eher an eine automatisierte Lsg
 
LSG?

Wie gesagt, ich würde das ganze mit Reflection machen. Da kannst du dir das ganze auch generisch machen, dass es mit allen Klassen funktioniert.

MFG

zEriX
 
Reflection klar, nur denk ich mir dass sich da schon jemand vor mir darüber gedanken gemacht hat und eventuell eine stabile Lsg besitzt.

Immerhin sind verschachtelte Objekte von A nach B zu transportieren nicht ganz banal (Reflexion + Rekursion)

eigentlich such ich, fällt mir grad auf einen Mapping Tool wie Hibernate, nur für Objekte
 
Zuletzt bearbeitet:
Hibernate macht es mit Reflection. :-)
Ich glaube nicht, dass es sowas schon fertig gibt. Aber du kannst ja noch ein bischen warten, ob jemand noch ne Idee hat. Sonst würde ich dir halt vorschlagen, dass du es selbst umsetzt.

MFG

zEriX
 
Hallo,

warum hast du denn die "gleichen" Klassen nochmal? Vererbung würde hier zu wesentlich einfacherem Code führen... Wenn du ein Objekt als ein anderes Objekt ausgeben willst kannst du das Adapter Pattern benutzen.

In Eclipse wird das so ziemlich an jeder Ecke verwendet. Dazu implementieren die "Adaptierbaren" Klassen das IAdaptable interface. Das IAdaptable hat die Methode:
Java:
public Object getAdapter(Class adapter);
Damit kann man sich einen Adapter geben lassen, welcher das angegebene Interface (adapter) implementiert und das eigentliche Objekt "wrapped". Aufrufe über das Interface werden nun über entsprechende "Bridge" Methode an die gewrappedte Instanz delegiert. Damit kann man eine Instanz einer Klasse wie eine andere Klasse "aussehen "lassen.

In Eclipse gibts dazu ne komplette erweiterbare Maschienere die es erlaubt über extension-points) auch nachträglich noch Adapter ins System einzubringen.
http://www.eclipsezone.com/articles/what-is-iadaptable/
Das ist eines meiner vielen Lieblingskonzepte bei Eclipse.

Java:
IAdaptable adaptable = someOtherInstanceThatImplementsIAdaptable;
        IFile file = (IFile)adaptable.getAdapter(IFile.class);
if(null != file){
   do something with file...
}

Siehe auch:
http://blogs.cocoondev.org/crafterm/archives/002049.html

Gruß Tom
 
Zurück