此贴终结, 方案: 取class分类讨论。
//属性
Object instance = tempC.newInstance();
//迭代解析
resoleParam(instance,instance.getClass());
Collection collection = null;
//如果是list 这样的接口或抽象类
if(aClass.isInterface()|| Modifier.isAbstract(aClass.getModifiers())){
//实例化它的可用类
collection = getNewInstanceWhenCollection(aClass);
}else{
//如果是可实例子类,则直接调用
collection = (Collection)aClass.newInstance();
}
collection.add(instance);
field.set(obj,collection);
/**
* 当class为collection 子接口或抽象类时,分类讨论 取出适合class的子类实例
* @param clazz
* @return
*/
private Collection getNewInstanceWhenCollection(Class clazz){
//判断是否是集合
if(!Collection.class.isAssignableFrom(clazz)){
return null;
}
//判断是list分支吗
if(List.class.isAssignableFrom(clazz)){
return new ArrayList();
}
//判断是set分支吗
if(Set.class.isAssignableFrom(clazz)){
return new HashSet();
}
//判断是队列分支吗
if(Queue.class.isAssignableFrom(clazz)){
return new LinkedList();
}
return null;
}