BeanUtilsイントロスペクションを使用してJavaオブジェクトのすべての属性のリストを取得する方法は?
-
10-07-2019 - |
質問
POJOをパラメーターとして取得するメソッドがあります。ここで、プログラムでPOJOのすべての属性を取得したいので(実行時にコードに含まれるすべての属性がわからない場合があるため)、属性の値も取得する必要があります。最後に、POJOの文字列表現を作成します。
ToStringBuilder を使用できます、ただし、要件に固有の特定の形式で出力文字列を作成します。
Beanutilsでこれを行うことは可能ですか?はいの場合、メソッド名へのポインタはありますか?いいえの場合、独自のリフレクションコードを作成する必要がありますか?
解決
試しました ReflectionToStringBuilder ?説明どおりに行う必要があるようです。
他のヒント
これは1年前の質問ですが、他の人にも役立つと思います。
このLOCを使用して部分的な解決策を見つけました
Field [] attributes = MyBeanClass.class.getDeclaredFields();
実際の例を次に示します。
import java.lang.reflect.Field;
import org.apache.commons.beanutils.PropertyUtils;
public class ObjectWithSomeProperties {
private String firstProperty;
private String secondProperty;
public String getFirstProperty() {
return firstProperty;
}
public void setFirstProperty(String firstProperty) {
this.firstProperty = firstProperty;
}
public String getSecondProperty() {
return secondProperty;
}
public void setSecondProperty(String secondProperty) {
this.secondProperty = secondProperty;
}
public static void main(String[] args) {
ObjectWithSomeProperties object = new ObjectWithSomeProperties();
// Load all fields in the class (private included)
Field [] attributes = object.getClass().getDeclaredFields();
for (Field field : attributes) {
// Dynamically read Attribute Name
System.out.println("ATTRIBUTE NAME: " + field.getName());
try {
// Dynamically set Attribute Value
PropertyUtils.setSimpleProperty(object, field.getName(), "A VALUE");
System.out.println("ATTRIBUTE VALUE: " + PropertyUtils.getSimpleProperty(object, field.getName()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
リフレクションを使用して、すべてのプロパティ/変数(名前のみ)を取得します。 getProperty メソッドを使用して、その変数の値を取得します
所属していません StackOverflow