Я бы хотел, чтобы в новых полях были нулевые значения для моих полей, которые являются типом "списка"
Как я поняла ниже, это точки, в которых объект инициализируется, поэтому в них мы должны сделать что-то, чтобы инициализировать пустой список в случае, еслииз нуля.
- Контроллер (когда объект приходит из внешнего интерфейса)
- Инициализация (новый AnyObject () или AnyObject.toBuilder - lombok)
- FeginClient - Вызовы междуApis
Есть ли какая-нибудь структура / аннотация, которая в случае нулевого значения установит пустой список?
Ниже приведено то, что я сейчас сделал
public class TestMapin {
public static void main(String[] args) throws IllegalAccessException {
Test test = new Test();
notNull(test);
System.out.println(test);
}
public static void notNull(Object test) throws IllegalAccessException {
for (Field field : test.getClass().getDeclaredFields()) {
boolean access = field.canAccess(test);
field.setAccessible(true);
if (field.get(test) == null) {
if (field.getType().isAssignableFrom(List.class)) {
field.set(test, Collections.emptyList());
} else if (field.getType().isAssignableFrom(Map.class)) {
field.set(test, Collections.emptyMap());
}
} else if (field.getType().getPackageName().contains("org.owozniak.selfestem")) {
notNull(field);
}
field.setAccessible(access);
}
}
}
@Setter
@ToString
class Test {
private ArrayList<String> stringList;
private Box box = Box.builder().build();
private Magazine magazine;
}
Итак,Мне нужно использовать - инициализация с помощью toBuilder - аннотация @Singular - Контроллеры / Feign клиенты - внедрить этот фрагмент кода в пружинные фильтры - Инициализация через конструктор - Использовать статический метод фабрики, который будет использовать этот фрагмент кода и вернуть «расширенный» экземпляр
Есть еще идеи / рамки?