自定义注解判空简单示例
不说废话,上主代码:
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
自定义注解判空简单示例相关推荐
- Spring 自定义注解,配置简单日志注解
java在jdk1.5中引入了注解,spring框架也正好把java注解发挥得淋漓尽致. 下面会讲解Spring中自定义注解的简单流程,其中会涉及到spring框架中的AOP(面向切面编程)相关概念. ...
- SpringBoot+拦截器+自定义异常+自定义注解+全局异常处理简单实现接口权限管理...
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_44102992/article/ details/107335702 前言 提到权限管理这块肯定很多人第一想到的 ...
- 【229期】Spring Boot 使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流...
点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...
- Lucene5学习之自定义同义词分词器简单示例
同义词功能在全文搜索时的意义,大家应该都懂的.今天中文我就试着写了一个同义词分词的示例demo,其实主要代码还是参考Lucene in Action 这本英文版书籍的随书代码,只不过Lucenen i ...
- 微信JSSDK分享页面自定义当前链接最简单示例
这个是使用微信原本的Deom修改 但是一定要注意几个注意事项,代码很简单,却让我一周mmp 在微信开发者工具调试,有时候你代码正确但是会报错 一定要真机调试 appid和secret一定要正确 一定要 ...
- java double类型判空,简单封装JAVA空判断
在项目开发过程中,面对各种各样的对象,如果稍不注意,就会发生NULL空指针报错;是不是很烦恼,特别是对重要的参数判读; 经过总结,把各种类型的空判断进行了简单的封装,对新手还是很方便的; packag ...
- jssdk分享设置_微信JSSDK分享页面自定义当前链接最简单示例
这个是使用微信原本的Deom修改 但是一定要注意几个注意事项,代码很简单,却让我一周mmp 在微信开发者工具调试,有时候你代码正确但是会报错 一定要真机调试 appid和secret一定要正确 一定要 ...
- .net 服务器端自定义分页控件 简单示例
使用效果如图: 先将控件添加到工具箱 将控件拖入到页面 会自动生成如下代码 <pager:pager ID="Pager1" runat="server" ...
- 一小时搞明白自定义注解(Annotation)
原文链接:http://blog.csdn.net/u013045971/article/details/53433874 什么是注解 Annotation(注解)就是Java提供了一种元程序中的元素 ...
最新文章
- 【Vegas原创】SQL case when 用法
- 10分钟内把永远跑不完的存储过程变为2秒跑完
- linux下的mysql修改默认编码
- Go语言字符串和数组的相互转换
- formlayout_精简SWT FormLayout的用法
- php 的不等于符号,mysql 不等于 符号写法
- C#如何测量字符串的高度宽度和精确取得字符串的高度宽度
- model存储 swift_使用Swift原生JSON-Model
- 01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目
- BeautifulSoup4 搜索文档树Day3-8
- JAVA对象,直接新建跟反射新建,有区别
- 一些自用的编程工具推荐
- 上下文切换调优-性能设计沉思录(9)
- Spring事务管理A方法内部调用B方法的回滚问题(springboot事务管理)
- 伴随矩阵和逆矩阵的关系证明
- 计算机的第一道安全防线是,网络安全的第一道防线是
- 5G NR 系统消息
- 打造全新的网站群管理系统
- python中x、y=y、x_浅谈 (x, y) = (y, x)
- JAVA异常实验:车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品
热门文章
- 前端职业规划 - 前端技术专家们的生死书
- python 空格字符的表示_python字符串怎么去空格
- python一对一_Python:在数据存储区中建立一对一的关系
- java list e 查找_源码(04) -- java.util.ListE
- java 类的域_Java类中对象域的初始化
- 中断程序_ABB机器人中断程序详解(安川FANUC)
- php实现页面雪花效果,CSS3如何实现雪花飘落的效果
- C语言学习笔记---指向函数的指针
- CentOS 7.x防火墙问题
- Android学习笔记(一)——控件布局常用属性