自定义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);