JAva反射によるクラスオブジェクトのリスト値の取得
2149 ワード
Field[] fields = Object.getClass().getDeclaredFields();//Object
for (Field field : fields) {if (!field.isAccessible()) {
field.setAccessible(true);
}
if (List.class.isAssignableFrom(field.getType())) {
Type t = field.getGenericType();
if (t instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) t;
Class clz = (Class) pt.getActualTypeArguments()[0];// list
Class clazz = field.get(db).getClass();// Class
Method m= clazz.getDeclaredMethod("size");
int size = (Integer) m.invoke(field.get(db));// list size , list
for (int i = 0; i < size; i++) {// list, get , list
Method getM= clazz.getDeclaredMethod("get", int.class);
if(!getM.isAccessible()){
getM.setAccessible(true);
}
mHelper.getDao(clz).createOrUpdate(getM.invoke(field.get(db), i));// Ormlite
}
}
}