use*_*334 6 java reflection arraylist
我正在编写一个将xml转换为Java对象的反序列化方法.我想动态地执行此操作,并避免将硬编码引用写入特定类型.
例如,这是我的一个类的简化版本.
public class MyObject {
public ArrayList<SubObject> SubObjects = new ArrayList<SubObject>();
}
Run Code Online (Sandbox Code Playgroud)
以下是该方法的精简版:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
调用此方法将如下所示:
MyObject obj = Serializer.fromXml("myxmldata", MyObject.class);
Run Code Online (Sandbox Code Playgroud)
请原谅我,如果这是一个微不足道的问题,因为我是一名学习Java的C#开发人员.
谢谢!
应该是非常接近的东西:
Object list = field.getType().newInstance();
Method add = List.class.getDeclaredMethod("add",Object.class);
add.invoke(list, addToAddToList);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
24960 次 |
| 最近记录: |