2012-05-02 2 views
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

250 полей является катастрофой. Вы должны разделить свой класс. – artbristol

+1

Если вы используете их все для одного и того же значения, то почему бы не использовать массив? –

+0

Это может быть очень законный класс для класса Java, который представляет собой большой объект данных, я видел много таких. Я считаю, что это требование справедливое. –

ответ

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; 
} 
+0

Пожалуйста, помогите, как реализовать – Abhij

+1

@Abhishekj: Учитывая, что Фрэнсис дал вам широкое направление, сколько исследований вы сделали в этом направлении? Что вы пробовали, и где проблемы? –

+2

Вы можете легко Google «Отражение Java» и найти указатели на API и множество примеров. Это всего лишь несколько строк кода. –

Смежные вопросы