Piszę metodę deserializacji, która konwertuje XML do obiektu Java. Chciałbym to zrobić dynamicznie i unikać pisania sztywno zakodowanych odniesień do określonych typów.Jak utworzyć instancję ArrayList <?> i dodać element poprzez odbicie za pomocą Java?
Na przykład jest to uproszczona wersja jednej z moich klas.
public class MyObject {
public ArrayList<SubObject> SubObjects = new ArrayList<SubObject>();
}
Oto okrojona wersja metody:
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;
}
}
Wywołanie tej metody może wyglądać następująco:
MyObject obj = Serializer.fromXml("myxmldata", MyObject.class);
Wybacz mi, jeśli jest to niemały problem jak ja programista C# uczący się języka Java.
Dzięki!
Czy możesz podać przykład pliku XML? – CookieOfFortune
Co jeśli subObjects jest zadeklarowane jako interfejs (np. Lista)? –