J'écris une méthode de désérialisation qui convertit xml en un objet Java. Je voudrais le faire dynamiquement et éviter d'écrire des références codées en dur à des types spécifiques.Comment instancier une ArrayList <?> et ajouter un élément par réflexion avec Java?
Par exemple, il s'agit d'une version simplifiée d'une de mes classes.
public class MyObject {
public ArrayList<SubObject> SubObjects = new ArrayList<SubObject>();
}
Voici une version dépouillée de la méthode:
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;
}
}
appel à cette méthode ressemblerait à ceci:
MyObject obj = Serializer.fromXml("myxmldata", MyObject.class);
Pardonne-moi si cela est un problème trivial que je suis un développeur C# apprenant Java.
Merci!
Pouvez-vous fournir un exemple du fichier XML aussi? – CookieOfFortune
Que se passe-t-il si subObjects est déclaré en tant qu'interface (comme une liste)? –