Je n'ai jamais vraiment utilisé la réflexion auparavant et je suis en train d'essayer quelque chose dont je ne suis pas sûr. Fondamentalement, j'essaye d'écrire une méthode qui prend un objet comme paramètre, et essaye alors de marshaler cet objet indépendamment de son type. Je ne peux pas comprendre comment obtenir le type à utiliser lors de l'instanciation de l'objet générique JAXBElement. Est-ce possible? Des idées? Ma tentative suit:Réflexion Java - Obtention d'un type à partir d'un objet pour instancier un générique
String marshalObject(Object obj) {
Class c = obj.getClass();
Type t = (Type) c;
QName _QNAME = new QName("http://www.acme.com/ImportExport", c.getName());
StringWriter sw = new StringWriter();
try {
ObjectFactory of = new ObjectFactory();
JAXBElement<?> jaxElement = new JAXBElement<t>(_QNAME, c, null, obj);
JAXBContext context = JAXBContext.newInstance(c);
Marshaller m = context.createMarshaller();
m.marshal(jaxElement, sw);
} catch(JAXBException jbe){
System.out.println("Error marshalling object: " + jbe.toString());
return null;
}
return sw.toString();
}
Wow, je ne peux pas croire que j'ai raté. Merci! –