【发布时间】:2014-01-03 07:53:22
【问题描述】:
我想获取一个类实例的所有属性的名称和值。该类可以是任意定制的任意类,也可以有对象列表、hashmap、表格等,并且可以从另一个类扩展。其实我的意思是我想得到一个类的所有属性的名称和值。所以我需要做的应该是一种模板。是否可以?我已经写到现在了。任何建议将不胜感激。
public static void getObjectIntoMap(Object obj) throws IllegalArgumentException, IllegalAccessException {
Field[] field = obj.getClass().getDeclaredFields();
Class<?> c = obj.getClass().getSuperclass();
if(c != Object.class)
getObjectIntoMap(c.getClass());
System.out.println("SSS : "+field.length);
for (Field f : field) {
if(f.getType() == java.util.List.class){
java.util.List<Object> ll = (java.util.List<Object>) f.get(obj);
for (Object o : ll) {
Field[] ff = o.getClass().getDeclaredFields();
for (Field field2 : ff) {
print(field2.getName(), field2.get(o).toString());
}
}
}else if(f.getType() == Hashtable.class){
}
else if(f.getType() == HashMap.class){
}else if(f.getType() == Object[].class){
}
else{
print(f.getName(), f.get(obj).toString());
}
}
}
【问题讨论】:
-
制作 f.setAccessible(true) 用于读取私有变量
-
谢谢。我在那里遇到了异常。你有什么建议吗?因为我不能考虑一个类在运行时可以拥有的所有东西。下面建议的思考在我看来似乎很困惑。
标签: java