2011-08-08 7 views
3

BeanUtils.describeのようなものを探していますが、オブジェクトではなく.classで作業していますか?誰か助けて?現在、私は以下のようにデフォルトのgetHeadersメソッドを使ってオブジェクトクラスのリストに取り組んでいます。Javaで.classのすべてのプロパティを取得するには?

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(); 
    } 
} 
+1

注意をクラス 'があなたに何らかの形で渡されました。 –

+0

@ Joachim good point –

+0

@Sean、「なぜこのタグが付いているのですか?」 ;-) –

答えて

10

Introspector APIを使用します*あなたは `へのアクセス権を持っていない限り、あなたは**` E.class`、これへの「回避策」もありません、*を使用することはできません

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

も投票してください、ありがとう – marioosh

4

ほんとにPropertyUtils.getPropertyDescriptors()が必要です。 PropertyDescriptorのオブジェクトの配列を返します。そのオブジェクトの名前を抽出する必要があります。

+0

ありがとうございました:) – marioosh

+0

@Seanの答えはBeanUtilsライブラリを必要とせずに動作し、呼び出しはほんの少し*長くなっています。 –

+0

もう一度あなたは正しいです:) – marioosh

関連する問題