質問
私は、多数のメンバーがいるDTOを持っています。 Javaがクラスのfor(in)のアイデアをサポートしているかどうか疑問に思っていました。私はそうは思わないが、もしそうなら、それは私に多くの悲しみを救うだろうので、私はそこに質問を投げるだろうと思った。
解決
まあ、あなたは反射でそれを行うことができます:
for (Field field : clazz.getFields())
{
...
}
(またはメソッドなどに相当するもの)
その後、特定のインスタンスのフィールド値または静的な値を取得できます。
他のヒント
それでも、少し面倒です。
リフレクションを使用する必要があります。
このClassオブジェクトによって表されるクラスまたはインターフェースによって宣言されたすべてのフィールドを反映するFieldオブジェクトの配列を返します
例をこちらで確認できます。
ClassオブジェクトからFieldオブジェクトを取得する方法は3つあります。
Class cls = java.awt.Point.class;
// By obtaining a list of all declared fields.
Field[] fields = cls.getDeclaredFields();
// By obtaining a list of all public fields,
// both declared and inherited.
fields = cls.getFields();
for (int i=0; i<fields.length; i++) {
Class type = fields[i].getType();
process(fields[i]);
}
// By obtaining a particular Field object.
// This example retrieves java.awt.Point.x.
try {
Field field = cls.getField("x");
process(field);
} catch (NoSuchFieldException e) {
}
クラスクラスを参照その他のオプションの定義。
はい、 Reflection API 。特に、 getMethods
メソッドを確認してください。 Class.html "rel =" nofollow noreferrer "> Class
。
リフレクションを使用して、すべてのメンバーと関数を取得できます。
たぶん、DTOに多くのメンバーがいるので、これが必要だと思う理由を自問する必要があるかもしれません。リファクタリングの時間かもしれません。
リフレクションフレームワークを見て、この情報についてクラスをイントロスペクトできます。
http:/ /java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html