Estoy escribiendo un método de deserialización que convierte XML a un objeto Java. Me gustaría hacer esto de forma dinámica y evitar escribir referencias codificadas de tipos específicos.¿Cómo crear una instancia de ArrayList <?> y agregar un elemento a través de la reflexión con Java?
Por ejemplo, esta es una versión simplificada de una de mis clases.
public class MyObject {
public ArrayList<SubObject> SubObjects = new ArrayList<SubObject>();
}
Aquí es una versión simplificada del método:
public class Serializer {
public static <T> T fromXml(String xml, Class<T> c) {
T obj = c.newInstance();
Field field = obj.getClass().getField("SubObjects");
//help : create instance of ArrayList<SubObject> and add an item
//help#2 : field.set(obj, newArrayList);
return obj;
}
}
llamada a este método sería el siguiente:
MyObject obj = Serializer.fromXml("myxmldata", MyObject.class);
Perdóname si esto es un problema trivial como soy un desarrollador de C# aprendiendo Java.
Gracias!
¿Puede proporcionar un ejemplo del archivo XML también? – CookieOfFortune
¿Qué pasa si subObjects se declara como una interfaz (como una lista)? –