2010-12-15 9 views
2

私はPOJOのプロパティ名の配列(またはリスト)を取得したいと思います。 私はcommons-beanutilのBeanUtils.describe(obj)を試しましたが、オブジェクトインスタンスが必要です。 しかし、私はそのクラスだけを持っていて、引数なしのpublicコンストラクタはありません。私はclazz.newInstance()を使ってオブジェクトを生成することはできません。public no-argコンストラクタなしでpojoクラスのプロパティ名を取得する方法は?

どうすれば解決できますか?クラスを掘り下げてプロパティ名を渡すことができるライブラリはありますか?

(私は手動でクラス構造を解析するためにリフレクションを使用することができます知っているが、私は便利なライブラリを探しています)

感謝。

+1

これを行うにはBeanUtils.describe(Class)オーバーロードがありません。なぜそれを実装してパッチとして貢献してみませんか? –

答えて

3

私は(そのことについては、java.beansにまたは何か)、それを使ったことがないが、 java.beans.Introspector.getBeanInfo(Class)あなたが探しているものかもしれません。

+0

ありがとう、それは便利なライブラリが存在しないと思われ、java.beans.Introspectorはこの仕事を終える。ありがとう。 – smallufo

4

Javaには反射utilsが組み込まれています。これを使用することができます。 java doc of Classを見てください。

例えば

Demoと呼ばれるクラスのすべてのgetterメソッドを取得するためにリフレクションDemo.class.getMethods();を使用して(それをinstanciatingせず。)

List<Method> allGetterMethodsOfClassDemo() = new ArrayList<Method>(); 
for(Method method : Demo.class.getMethods()){ 
    if(method.getName().startsWith("get") || method.getName().startsWith("is")) { 
    allGetterMethodsOfClassDemo.add(method); 
    } 
} 
+0

boolean型の* is *メソッドを追加する必要があるかもしれません。 ;)getterにはパラメータもなく、戻り値の型はvoid.classにできません。 (退屈な、nesのPA;) –

+0

@ピーターLawrey:ヒントのおかげで、私は "接頭辞"プレフィックスを追加しました。他の発言も正しい。 – Ralph

+0

ああ、次の文字は大文字である必要があります。 :(フィールドgetable(String)とvoid isolate(String)のようなメソッドがありました –

関連する問題