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 内容简介 作为一位 ...
随机推荐
- spark streaming 实战
最近在学习spark的相关知识, 重点在看spark streaming 和spark mllib相关的内容. 关于spark的配置: http://www.powerxing.com/spark-q ...
- MVC 学习(二)之Linq to Sql 简单Demo
Linq to Entities 已经我的一篇博文中阐述了,这里阐述一下简单的Linq to Sql 的增删改查.Linq to sql 与Linq to Entities虽然同属于DataBase- ...
- Java web 之表单验证
按照软件工程师的定位来讲,表单验证应该要好好练习的 html javascript
- SpringMVC+MyBatis项目分析与开发实例
一.用到的Jar包 <!-- ************ Spring测试包 ************* --><artifactId>spring-test</artif ...
- 专题:『Channel Bonding/team』——EXPERIMANTAL!!!
Linux内核支持的多网卡聚合方法——bond.team bond 优点:经过长时间的实践检验,具有较高的稳定性:kernel-2.4及以上内核均广泛支持 缺点:需要通过sysfs或发行版定制的网卡配 ...
- 水果项目第2集-建立数据库->编写数据访问基础类->实现类的方法->调试通过
看来写博客对懒人也有好处.监督自己的好处. 今天一打开电脑,就想继续写了. 今天就开始动手做了. 数据库建立,编写访问数据库代码,实现各个类的方法,调试这些方法. 这些基础的代码写完后,就可以写逻辑代 ...
- Oracle每天自学一点点 常用Oracle
创建表空间:create tablespace crmtb datafile 'F:\Oracle\oradata\crmtb.dbf' size 100M;删除表空间:DROP TABLESPACE ...
- IntelliJ IDEA 目录技巧
IntelliJ IDEA的Web应用的目录结构 Ø 目录图: Ø 目录解释: 开发目录 目录名称 描述 Test 工程名称 lib Jar包的存放目录 src 源文件也就是文件(类,资源文件)存放的 ...
- MySQL日期时间函数大全(转)
MySQL日期时间函数大全 DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1 ...
- [f]区间随机数函数
$.r = function(i, g) { var j = Math.random(), h = arguments.length; return h == 2 ? (i + Math.floor( ...