判斷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;




    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = 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);
        }
    }
}

打印結果:
對象缺失信息:年齡爲空; 住址爲空; 公司爲空;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章