attilax.java 注解的本质and 使用最佳实践(3)O7
attilax.java 注解的本质and 使用最佳实践(3)O7
1. 定义pojo
public class pojo {
@Validate("required")
String name;
int id;
@Validate("required")
String email;
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. 建立注解By eclipse tps
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* from tapestry5
* @author Administrator
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Validate {
// java.lang.annotation.Retention
String value();
}
3. 注解参数的可支持数据类型:
1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
2.String类型
3.Class类型
4.enum类型
5.Annotation类型
6.以上所有类型的数组
4. 注解处理器
就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理。
多资料都提到 APT ,或者 AbstractProcessor 。但事实上,我的理解是 APT 或者 AbstractProcessor 更多的用于:在非运行时进行增强处理(如:分析逻辑 BUG ,分析代码结构等等)。
5. 读取注解
Field[] flds = pojo.class.getDeclaredFields();
for (Field field : flds) {
System.out.println(field.getName());
Validate vld = field.getAnnotation(Validate.class);
if (vld != null) {
System.out.println(vld);
System.out.println(vld.value());
}
}
>>>>>>>
name
@com.attilax.anno.Validate(value=required)
required
id
@com.attilax.anno.Validate(value=required)
required
6. 不能读取到注解,为null的解决
添加@Retention(RetentionPolicy.RUNTIME)
通知:eclipse4.3不能自动提示导入这个类.只好手动import
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
1.1、@Retention: 定义注解的保留策略
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
7. 参考:
paip.Java Annotation注解的作用and 使用 - attilax的专栏 - 博客频道 - CSDN.NET.htm
paip.java 注解的详细使用代码 - attilax的专栏 - 博客频道 - CSDN.NET.htm
java自定义注解 - 茄子_2008 - 博客园.htm (detail api)
深入理解Java:注解(Annotation)自定义注解入门 - peida - 博客园.htm (api)
attilax.java 注解的本质and 使用最佳实践(3)O7的更多相关文章
- paip.java win程序迁移linux的最佳实践
paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...
- 【转】Java中关于异常处理的十个最佳实践
原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7
atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...
- Java日志体系(八)最佳实践
java常用日志框架关系 Log4j 2与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1. Logback必须配合Slf4j使用.由于Logback和Slf4j是同一个作者,其兼容 ...
- java注解及在butternife中的实践和原理
1. 背景 之前去一个公司,说到了java的注解,问java的注解有几种方式,然后我提到了android中的butternife和afinal注解工具,我们知道butternife在6.1版本的时候 ...
- Java Management Extensions (JMX) - Best Practices 最佳实践
Java Management Extensions (JMX) - Best Practices 注意,本文一些管理可能与JMX API或JSR 77 (J2EE management)不一致.它们 ...
- 《转载》Java异常处理的10个最佳实践
本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...
- 《深入理解Java虚拟机:JVM高级特性与最佳实践》【PDF】下载
<深入理解Java虚拟机:JVM高级特性与最佳实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062566 内容简介 作为一位 ...
随机推荐
- Servlet 添加购物车
import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.It ...
- PHP的OB缓存(输出缓存)
使用PHP自带的缓存机制 原则:如果ob缓存打开,则echo的数据首先放在ob缓存.如果是header信息,直接放在程序缓存.当页面执行到最后,会把ob缓存的数据放到程序缓存,然后依次返回给浏览器. ...
- sp_MSforeachtable使用方法
1)说明系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程,从ms sql 6.5开始.存放在SQL Server的MASTER数据库中. ...
- SQL Server 扩展一个支持类似。net 时间格式化的标量函数~
* FROM sys.objects WHERE name=N'uF_DateFormat' AND [type]='FN') DROP FUNCTION uF_DateFormat GO SET A ...
- Data Base MongoDB 无法创建抽象类的问题,
无法创建抽象类BsonClassMap.RegisterClassMap 大家都知道抽象类是无法实例化的,即:不能new. 在以下这些情况会遇到这种问题: 1.基类是抽象类: 2.基类是接口: 由于 ...
- 常见的HTTP 状态代码
HTTP 状态代码 如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响 ...
- web.xml相关知识摘录整理
web.xml 中的listener. filter.servlet 加载顺序及其详解 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人 ...
- RHEL查看CPU等机器信息
查看CPU信息: [root@pqsfc072 ~]# cat /proc/cpuinfo 查看CPU型号: [root@pqsfc072 ~]# cat /proc/cpuinfo | grep n ...
- [转载~笔记]CentOS单独编译安装PHP gd库扩展
http://www.nowamagic.net/librarys/veda/detail/2610 安装gd前置库: freetype, jpegsrc, libpng 1. freetypewge ...
- Oracle中用一条Sql实现任意的行转列拼接 多行拼接
表结构和数据如下(表名Test): NO VALUE NAME 1 a 测试1 1 b 测试2 1 c 测试3 1 d 测试4 2 e 测试5 4 f 测试6 4 g 测试7 Sql语句: selec ...