1

私はpojoクラスを持っています

class Foo{
 String a
 String b
 .
 .
 // nearly 250 data members
 // all have getters and setter

}

クラスのオブジェクトを作成するときに、オブジェクトのデータメンバーが空白であることを確認するにはどうすればよいですか

私は次のアプローチを使用しています

public  boolean clearBlank()
{

    if(StringUtils.isBlank(this.getA()))
        return true;
    if(StringUtils.isBlank(this.getB()))
        return true;
    if(StringUtils.isBlank(this.getC()))
        return true;
    .
    .
    .
    // similarly for all 250 data member
    return false;

}

オブジェクトの250個のゲッターすべてを呼び出してチェックする代わりに、より良いアプローチはありますか?

4

1 に答える 1

7

はい、Java Reflection を使用して、オブジェクトのすべてのフィールドを調べ、それらの値を取得して比較を行うことができます。

このような:

public static boolean hasBlankVariables(Object obj) throws IllegalArgumentException, IllegalAccessException {
    for (Field field : obj.getClass().getDeclaredFields()) {
        if (!field.isAccessible()) {
            field.setAccessible(true);
        }
        // Danger!
        String str = (String) field.get(obj);
        if (StringUtils.isBlank(str)) {
            return true;
        }
    }
    return false;
}
于 2012-05-02T14:27:51.670 に答える