最近做了一个新的需求,要通过反射机制,获取A类中的私有子类a,并用该对象构建list并塞入A的对象中。
主要思路是:(1)反射获取私有类;(2)构建私有类对象并反射插入list;(3)反射调用add方法。
查了挺多资料,但是很少有专门描述这个问题的。其难点主要在于编译时检测和参数无法匹配,通过多次反射才解决该问题,记录如下,直接上代码。
static void test2() {
try {
String str = "cn.com.template.data.transactiondata.orpo.TradedDetail";
Class> clazz = Class.forName(str);
Object newInstance = clazz.newInstance();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
//System.out.println(field.getModifiers() + "\t" + field.getType() + "\t" + field.getName());
if (List.class.getName().equals(field.getType().getName())) {
Type type = field.getGenericType();
if (type instanceof ParameterizedType) {
ParameterizedTyp