如何在Java中获取.class的所有属性?

时间:2011-08-08 12:43:52

标签: java generics

我正在搜索类似于BeanUtils.describe的内容,但正在处理.class,而不是对象?有人帮忙吗?目前我正在使用默认的getHeaders方法处理对象列表,如下所示。

public class SimpleList<E>  {
    protected final Class<E> clazz;

    SimpleList(Class<E> clazz) {
        this.clazz = clazz;
    }

    public String[] getHeaders() {
        Map props = BeanUtils.describe(clazz); // replace this with something
        return (String[]) props.keySet().toArray();
    }
}

2 个答案:

答案 0 :(得分:10)

使用Introspector API:

PropertyDescriptor[] propertyDescriptors = 
    Introspector.getBeanInfo(beanClass).getPropertyDescriptors();
List<String> propertyNames = new ArrayList<String>(propertyDescriptors.length);
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
    propertyNames.add(propertyDescriptor.getName());
}

答案 1 :(得分:4)

你非常想要PropertyUtils.getPropertyDescriptors()。它返回一个PropertyDescriptor个对象数组,您需要从中提取名称。