不说废话,上主代码:

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

自定义注解判空简单示例相关推荐

  1. Spring 自定义注解,配置简单日志注解

    java在jdk1.5中引入了注解,spring框架也正好把java注解发挥得淋漓尽致. 下面会讲解Spring中自定义注解的简单流程,其中会涉及到spring框架中的AOP(面向切面编程)相关概念. ...

  2. SpringBoot+拦截器+自定义异常+自定义注解+全局异常处理简单实现接口权限管理...

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_44102992/article/ details/107335702 前言 提到权限管理这块肯定很多人第一想到的 ...

  3. 【229期】Spring Boot 使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流...

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  4. Lucene5学习之自定义同义词分词器简单示例

    同义词功能在全文搜索时的意义,大家应该都懂的.今天中文我就试着写了一个同义词分词的示例demo,其实主要代码还是参考Lucene in Action 这本英文版书籍的随书代码,只不过Lucenen i ...

  5. 微信JSSDK分享页面自定义当前链接最简单示例

    这个是使用微信原本的Deom修改 但是一定要注意几个注意事项,代码很简单,却让我一周mmp 在微信开发者工具调试,有时候你代码正确但是会报错 一定要真机调试 appid和secret一定要正确 一定要 ...

  6. java double类型判空,简单封装JAVA空判断

    在项目开发过程中,面对各种各样的对象,如果稍不注意,就会发生NULL空指针报错;是不是很烦恼,特别是对重要的参数判读; 经过总结,把各种类型的空判断进行了简单的封装,对新手还是很方便的; packag ...

  7. jssdk分享设置_微信JSSDK分享页面自定义当前链接最简单示例

    这个是使用微信原本的Deom修改 但是一定要注意几个注意事项,代码很简单,却让我一周mmp 在微信开发者工具调试,有时候你代码正确但是会报错 一定要真机调试 appid和secret一定要正确 一定要 ...

  8. .net 服务器端自定义分页控件 简单示例

    使用效果如图: 先将控件添加到工具箱 将控件拖入到页面 会自动生成如下代码 <pager:pager ID="Pager1" runat="server" ...

  9. 一小时搞明白自定义注解(Annotation)

    原文链接:http://blog.csdn.net/u013045971/article/details/53433874 什么是注解 Annotation(注解)就是Java提供了一种元程序中的元素 ...

最新文章

  1. 【Vegas原创】SQL case when 用法
  2. 10分钟内把永远跑不完的存储过程变为2秒跑完
  3. linux下的mysql修改默认编码
  4. Go语言字符串和数组的相互转换
  5. formlayout_精简SWT FormLayout的用法
  6. php 的不等于符号,mysql 不等于 符号写法
  7. C#如何测量字符串的高度宽度和精确取得字符串的高度宽度
  8. model存储 swift_使用Swift原生JSON-Model
  9. 01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目
  10. BeautifulSoup4 搜索文档树Day3-8
  11. JAVA对象,直接新建跟反射新建,有区别
  12. 一些自用的编程工具推荐
  13. 上下文切换调优-性能设计沉思录(9)
  14. Spring事务管理A方法内部调用B方法的回滚问题(springboot事务管理)
  15. 伴随矩阵和逆矩阵的关系证明
  16. 计算机的第一道安全防线是,网络安全的第一道防线是
  17. 5G NR 系统消息
  18. 打造全新的网站群管理系统
  19. python中x、y=y、x_浅谈 (x, y) = (y, x)
  20. JAVA异常实验:车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品

热门文章

  1. 前端职业规划 - 前端技术专家们的生死书
  2. python 空格字符的表示_python字符串怎么去空格
  3. python一对一_Python:在数据存储区中建立一对一的关系
  4. java list e 查找_源码(04) -- java.util.ListE
  5. java 类的域_Java类中对象域的初始化
  6. 中断程序_ABB机器人中断程序详解(安川FANUC)
  7. php实现页面雪花效果,CSS3如何实现雪花飘落的效果
  8. C语言学习笔记---指向函数的指针
  9. CentOS 7.x防火墙问题
  10. Android学习笔记(一)——控件布局常用属性