不止判断一个属性,要判断对象里面的所有属性,可能有list嵌套
时间: 2024-01-21 19:05:06 浏览: 144
如果需要判断对象中所有属性是否为 null 并设置为一个空的 List,可以使用递归的方式遍历对象的所有属性,如果是 List 类型则设置为空的 List,否则继续递归遍历。
下面是一个示例代码:
```java
public static void checkAndSetListProperties(Object obj) throws NoSuchFieldException, IllegalAccessException {
// 获取对象的所有属性
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(obj);
if (value == null) {
// 如果属性值为 null,创建一个空的 List 并设置回去
if (List.class.isAssignableFrom(field.getType())) {
field.set(obj, new ArrayList<>());
}
} else if (value instanceof List) {
// 如果属性值不为 null 且类型是 List,则递归处理 List 中的元素
List list = (List) value;
for (Object element : list) {
checkAndSetListProperties(element);
}
} else {
// 如果属性值不为 null 且类型不是 List,则递归处理该属性
checkAndSetListProperties(value);
}
}
}
```
这个函数接受一个对象作为参数,会递归遍历该对象的所有属性。如果属性值为 null 且类型是 List,则会创建一个空的 List 并设置回去;如果属性值不为 null 且类型是 List,则会递归处理 List 中的元素;否则会递归处理该属性。
阅读全文