如何实例化一个 ArrayList<?>并通过 Java 反射添加项目? [英] How to instantiate an ArrayList<?> and add an item through reflection with Java?
本文介绍了如何实例化一个 ArrayList<?>并通过 Java 反射添加项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在编写一个将 xml 转换为 Java 对象的反序列化方法.我想动态地执行此操作并避免编写对特定类型的硬编码引用.
I am writing a deserialization method that converts xml to a Java object. I would like to do this dynamically and avoid writing hard coded references to specific types.
例如,这是我的一个课程的简化版本.
For example this is a simplified version of one of my classes.
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;
}
}
调用这个方法看起来像这样:
Calling this method would look like this:
MyObject obj = Serializer.fromXml("myxmldata", MyObject.class);
如果这是一个小问题,请原谅我,因为我是一名学习 Java 的 C# 开发人员.
Forgive me if this is a trivial problem as I am a C# developer learning Java.
谢谢!
推荐答案
应该非常接近:
Object list = field.getType().newInstance();
Method add = List.class.getDeclaredMethod("add",Object.class);
add.invoke(list, addToAddToList);
希望这会有所帮助.
这篇关于如何实例化一个 ArrayList<?>并通过 Java 反射添加项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文