0
用下面的一行代碼:反向的.class以原班型
List<Dao<?>> genericList = Dao.get(Person.class, q);
我調用下面的靜態方法:
/**
* Dynamically create list of generic Dao's
* @param className
* @return
*/
public static List<Dao<?>> get(Class<?> classType, Query q){
List<Dao<?>> list = new ArrayList<>();
try {
List<Map<String, Object>> results = Model.getAll(q);
for (Map<String, Object> map : results) {
Dao<?> obj = PojoFactory.createPojo(classType.getSimpleName());
for (String key : map.keySet()) {
//Double check if field names exist before setting them
//http://commons.apache.org/proper/commons-beanutils/
BeanUtils.setProperty(obj, key, map.get(key));
}
list.add(obj);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return list;
}
而不是返回DAO類的,我想回國正確的類型,以便我不需要後來施放。
爲了做到這一點,我需要能夠扭轉:
Person.class
這一行適應:
List<Dao<?>> genericList = Dao.get(Person.class, q);
爲正確的類型,這樣我可以這樣調用:
List<Person> genericList = Dao.get(Person.class, q);
任何想法?
就是這樣。謝謝! – Trace