Проверьте имя класса не должно содержать определенный текст - PullRequest
0 голосов
/ 30 октября 2019

У меня есть класс, следующий класс University.

public class University {
private List<Student> Students = null;
private List<Departments> department;
private CanteenName canteenName;
private LibraryName libraryName;
}

Я должен написать логику, в которой мне нужно проверить каждую переменную в этом классе и, если любое имя переменной, как в этом случае (Canteen Name , Library Name ) содержит текст ' Name ', он должен проверять, является ли он нулевым или нет, другую переменную он должен игнорировать.

Я думал о том, чтобы выполнить нулевую проверку с использованием свойства getter, но есть ли какой-либо динамический способ, поскольку класс содержит любое количество переменных, например (Canteen Name ).

1 Ответ

0 голосов
/ 30 октября 2019

Вы можете достичь этого с помощью отражения:

public static void checkObjectFieldForNull(Object obj, String... fieldNames) throws Exception {
   if (obj == null) return;
   //get all the fields in the object
   for (Field f : obj.getClass().getDeclaredFields()) {
     f.setAccessible(true); //set the fields to be accessible
     for (String str : fieldNames) {
        //loop through the fieldNames and see if they are null
        if (f.getName().toLowerCase().contains(str.toLowerCase())) {
          Obj val = f.get(obj);
          //throw an exception if any of the required fields are null
          if (val == null) throw new Exception(f.getName() + " cannot be null");
        }   
     }
   }
}

Тогда в вашей программе:

public static void main(String[] args) {
   University u = new University();
   checkObjectFieldForNull(u, "name");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...