判断list集合中对象的属性是否为空

自定义CheckNull注解

import java.lang.annotation.*;
 * 校验为空的字段
@Documented
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckNull {
    String message() default "";

在对象中对需要校验空的属性加上CheckNull 注解

import java.io.Serializable; * @author hjh public class Person implements Serializable { private static final long serialVersionUID = 5074596588311962143L; @CheckNull(message = "姓名为空") private String name; @CheckNull(message = "手机号为空") private String phone; private Integer sex; @CheckNull(message = "年龄为空") private Integer age; @CheckNull(message = "住址为空") private String address; @CheckNull(message = "公司为空") private String company;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class CheckNullTest {
    public static void main(String[] args) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        List<Person> personList = new ArrayList<>();
        Person person1 = new Person();
        //只设置名字和手机号
        person1.setName("小明");
        person1.setPhone("13847115418");
        person1.setAddress("");
        personList.add(person1);
        //判断list对象中那些属性为空
        Field[] fields = Person.class.getDeclaredFields();
        for(Person person : personList){
            StringBuilder errorMessage = new StringBuilder();
            for (Field field : fields) {
                if(field.isAnnotationPresent(CheckNull.class)) {
                    field.setAccessible(true);
                    CheckNull annotation = field.getAnnotation(CheckNull.class);
                    if(field.get(person) == null){
                        errorMessage.append(annotation.message() + "; ");
                    //字符型长度为0
                    if(field.getType().equals(String.class)){
                        Method getLength = String.class.getMethod("length");
                        if(field.get(person) != null && getLength.invoke(field.get(person)).equals(0)){
                            errorMessage.append(annotation.message() + "; ");
            System.out.println("对象缺失信息:"+errorMessage);