【发布时间】:2019-07-14 19:00:37
【问题描述】:
我想为我的“列表”类型的字段添加空值
正如我所理解的,下面是初始化对象的点,所以在这些点中我们应该做一些事情来初始化空列表以防空列表。
- 控制器(当对象来自前端时)
- 初始化(new AnyObject() 或 AnyObject.toBuilder - lombok)
- FeginClient - API 之间的调用
是否有一些框架/注释在 null 的情况下会设置空列表?
以下是我目前所做的
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 客户端 - 将此代码 sn-p 注入到 spring 过滤器 - 通过构造函数初始化 - 使用静态工厂方法,该方法将使用此代码剪切并返回“增强”实例
还有其他想法/框架吗?
【问题讨论】:
-
完全无法理解您的疑问,您能解释一下吗?
-
不清楚你的问题是什么。如果你想要一个默认的空列表,那么你不能只做
List<Record> records = new ArrayList<>(); -
如果我在控制器中收到这个实例,这将不起作用
标签: spring spring-boot spring-mvc spring-data-jpa lombok