博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义注解判空简单示例
阅读量:5157 次
发布时间:2019-06-13

本文共 2398 字,大约阅读时间需要 7 分钟。

不说废话,上主代码:

import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;import a.jery.NotNull;public final class Demo {        public static void main(String[] args) {                Person p=new Person();        p.setPersonName("123");        CheckRS rs=check(p);        System.out.println(String.format("flag:%s,msg:%s.", rs.getFlag(),rs.getMsg()));        p.setPersonName(null);        rs=check(p);        System.out.println(String.format("flag:%s,msg:%s.", rs.getFlag(),rs.getMsg()));        System.exit(0);    }        @SuppressWarnings({ "rawtypes"})    public static CheckRS check(Object param){        CheckRS rs=new CheckRS();        Class cls=param.getClass();        try {                        BeanInfo beanInfo=Introspector.getBeanInfo(cls);            PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();            for(PropertyDescriptor pd:pds){                Method readMethod=pd.getReadMethod();                Method writeMethod=pd.getWriteMethod();                if(null!=readMethod&&null!=writeMethod){                    Field field=cls.getDeclaredField(pd.getName());                    if(null!=field&&null!=field.getAnnotation(NotNull.class)){                        if(null==readMethod.invoke(param)){                            rs.setFlag(false);                            rs.setMsg(field.getAnnotation(NotNull.class).value());                            break;                        }                                            }                }            }                    } catch (Exception e) {            e.printStackTrace();        }        return rs;    }    }

运行结果:

flag:true,msg:null.flag:false,msg:姓名不可为空.

自定义注解类:

package a.jery;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({java.lang.annotation.ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface NotNull {    String value() default "NotNull.value";}

普通类:

  

import a.jery.NotNull;public class Person {            @NotNull("姓名不可为空")    private String personName;    public String getPersonName() {        return personName;    }    public void setPersonName(String personName) {        this.personName = personName;    }    }

至此 演示完毕。

转载于:https://www.cnblogs.com/shoubianxingchen/p/5722761.html

你可能感兴趣的文章
KindEditor图片上传到七牛云
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
PAT L2-016 愿天下有情人都是失散多年的兄妹
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
Java中对List集合排序的两种方法
查看>>
BeanShell简介
查看>>
python字符串操作
查看>>
MySQL学习之备份
查看>>
不同程序语言的注释和变量要求
查看>>
语言基础(9):static, extern 和 inline
查看>>