java 写一个函数 判断一个对象里面的属性是list,且是null时,给他赋值
时间: 2024-02-19 19:04:05 浏览: 68
可以写一个类似于下面的函数来实现:
```java
public static void checkAndSetListProperty(Object obj, String propertyName, Class<?> elementType) throws NoSuchFieldException, IllegalAccessException {
// 通过反射获取属性
Field field = obj.getClass().getDeclaredField(propertyName);
field.setAccessible(true);
Object value = field.get(obj);
if (value == null) {
// 如果属性值为null,创建一个空的 List 并设置回去
List list = new ArrayList<>();
field.set(obj, list);
} else if (value instanceof List) {
// 如果属性值不为null且类型是 List,则判断 List 中的元素类型是否与指定的类型相同
List list = (List) value;
if (!list.isEmpty() && !elementType.isAssignableFrom(list.get(0).getClass())) {
throw new IllegalArgumentException("List element type mismatch");
}
} else {
// 如果属性值不为null且类型不是 List,则抛出异常
throw new IllegalArgumentException("Property type mismatch");
}
}
```
这个函数接受三个参数:对象、属性名和元素类型。如果对象中指定的属性是 List 类型且为 null,则会创建一个空的 List 并设置回去;如果属性不为 null,则会检查 List 中的元素类型是否与指定的类型相同。如果不相同,则会抛出 IllegalArgumentException 异常。如果该属性不是 List 类型,则也会抛出 IllegalArgumentException 异常。
阅读全文