通过反射判断对象的属性是否有非法为空的属性
public class FieldUtil {
//传入对象
private static List<String> getNullFields(Object object) {
ArrayList<String> list = new ArrayList<String>();
// 获取 class 文件
Class aClass = object.getClass();
//获取所有的字段包含私有的
Field[] fields=aClass.getDeclaredFields();
for (Field field : fields) {
// 暴力访问
field.setAccessible(true);
// 获取字段对应的值
Object fieldValue = null;
//捕获异常
try {
fieldValue = field.get(object);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
//判断对象不能为null 还有字符串不能为""
if (fieldValue == null||fieldValue.toString().trim().length()==0) {
// 为 null,放入 list
list.add(field.getName());
}
}
return list;
}
//判断传入的可以为空的属性与对象中为空的属性是否一致 可以为空的属性
public static boolean pdNullField(Object object, String[] value) {
final List<String> nullFiled = getNullFields(object);
// 对象中为 null 的数量和传入的字段一致
boolean flag1 = nullFiled.size() == value.length;
boolean flag2 = true;
//输出为空的属性
for (String s : nullFiled) {
System.out.println(s);
}
//遍历参数
for (String s : value) {
if (!nullFiled.contains(s)) {
// 如果不包含其中一个字段,返回 false
flag2 = false;
break;
}
}
return flag1 && flag2;
}
}