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

如何在Java中获取.class的所有属性?,java,generics,Java,Generics,我正在搜索像这样的东西,但工作在.class,而不是object?有人帮忙吗?目前,我正在使用默认的getHeaders方法处理对象列表类,如下所示 public class SimpleList<E> { protected final Class<E> clazz; SimpleList(Class<E> clazz) { this.clazz = clazz; } public String[] ge

我正在搜索像这样的东西,但工作在
.class
,而不是object?有人帮忙吗?目前,我正在使用默认的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();
    }
}
公共类SimpleList{
受保护的最终类clazz;
简单列表(类clazz){
this.clazz=clazz;
}
公共字符串[]getHeaders(){
地图道具=BeanUtils.description(clazz);//用某物替换它
返回(字符串[])props.keySet().toArray();
}
}
你非常想要。它返回一个对象数组,您需要提取其中的名称。

使用API:

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

请注意,您不能使用
E.class
,也没有“解决办法”,除非您可以访问以某种方式传递给您的
类。@Sean,我刚刚在想“为什么要标记它?”;-)之后注意到了这一点@约阿希姆,你说得对。我现在更正了这个问题。@Sean的答案不需要BeanUtils库,调用只需要稍微长一点。
PropertyDescriptor[] propertyDescriptors = 
    Introspector.getBeanInfo(beanClass).getPropertyDescriptors();
List<String> propertyNames = new ArrayList<String>(propertyDescriptors.length);
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
    propertyNames.add(propertyDescriptor.getName());
}