gpt4 book ai didi

java - 如何获取类的所有属性?

转载 作者:行者123 更新时间:2023-11-30 07:11:42 24 4
gpt4 key购买 nike

我想获取类实例的所有属性的名称和值。该类可以是任何定制的任何类,它也可以有对象列表、 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());
}
}
}

最佳答案

尝试 http://code.google.com/p/reflections/ ReflectionUtils.getAllFields 返回所有类字段的集合,包括所有父类(super class)型字段。现在我们只需要遍历它们并读取实例字段值:

  Set<Field> fields = ReflectionUtils.getAllFields(X.class, new Predicate() {
public boolean apply(Object input) {
return true;
}});
Map<Field, Object) values = ...
for(Field f : fields) {
f.setAccessible(true);
values.put(f, f.get(obj);
}

关于java - 如何获取类的所有属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20899045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com