我正在编写一个将xml转换为Java对象的反序列化方法。我想动态地做到这一点,并避免编写特定类型的硬编码引用。如何实例化ArrayList <?>并通过Java反射添加项目?
例如,这是我的一个类的简化版本。
public class MyObject {
public ArrayList<SubObject> SubObjects = new ArrayList<SubObject>();
}
下面是该方法的一个精简版:
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;
}
}
调用此方法应该是这样的:
MyObject obj = Serializer.fromXml("myxmldata", MyObject.class);
原谅我,如果这是一个很重要的问题,因为我一位学习Java的C#开发人员。
谢谢!
你能提供一个XML文件的例子吗? – CookieOfFortune 2009-07-07 16:48:05
如果subObjects被声明为接口(如List)会怎么样? – 2009-07-07 19:29:22