2011-09-19 12 views
5

可能な重複属性:
How to loop over a Class attributes in Java?反復は、Javaで

class Foo{ 
    int id; 
    String name; 
    int bar; 
    int bar2; 

    //.. 
} 

Foo foo = new Foo(); 

をこのオブジェクトがJavaで属性を反復する方法はありますか?私はINSERTクエリを作成したいと私は文字列のすべてのint属性を変換する必要があります。異なるタイプの属性がさらにある場合には少し問題があります。

ありがとうございます!

+0

この質問は重複していませんが、1つはCLASS属性をループすること、もう1つはOBJECT属性をループすることです。 –

答えて

0

Java Reflectionを使用すると、そうすることができます。

3

私はthis以前の投稿はあなたが必要とすることをするのに役立つはずだと思います。

0

@あなたはFOO.CLASSオブジェクト(またはfoo.getClass(上の()メソッド)getDeclaredFieldsを呼び出してはFooクラスのすべてのフィールドを取得することができます詳細情報。getDeclaredFields()あなたが手にクラスのインスタンスを持っている場合。

getDeclaredFieldsは、()(java.lang.reflectのパッケージで宣言された)Fieldオブジェクトの配列を返します。

あなたがデータベース内のオブジェクトで仕事をしたいと思われるので、取るために良いかもしれません手動でINSERT文を生成するのではなく、Java Persistence APIを見てください。そうすれば、SQLを手作業で扱う必要がなくなります。

3

プロパティの順序は、関連する使用Apache Commons BeanUtilsされていない場合:それゆえBeanUtilsは、ジェネリックを使用していないことを

Foo foo = new Foo(); 
Map<String, Object> fields = (Map<String, Object>) BeanUtils.describe(foo); 

ノート、キャスト。

その他の注意:この方法を使用するには、オブジェクトがJavaBeans仕様に準拠している必要があります。