attilax.java 注解的本质and 使用最佳实践(3)O7

1. 定义pojo 1

2. 建立注解By eclipse tps 1

3. 注解参数的可支持数据类型: 2

4. 注解处理器 2

5. 读取注解 2

6. 不能读取到注解,为null的解决 3

7. 参考: 3

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

email

@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的更多相关文章

  1. paip.java win程序迁移linux的最佳实践

    paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...

  2. 【转】Java中关于异常处理的十个最佳实践

    原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...

  3. atitit.基于http json api 接口设计 最佳实践 总结o7

    atitit.基于http  json  api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...

  4. atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

    atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...

  5. Java日志体系(八)最佳实践

    java常用日志框架关系 Log4j 2与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1. Logback必须配合Slf4j使用.由于Logback和Slf4j是同一个作者,其兼容 ...

  6. java注解及在butternife中的实践和原理

    1.  背景 之前去一个公司,说到了java的注解,问java的注解有几种方式,然后我提到了android中的butternife和afinal注解工具,我们知道butternife在6.1版本的时候 ...

  7. Java Management Extensions (JMX) - Best Practices 最佳实践

    Java Management Extensions (JMX) - Best Practices 注意,本文一些管理可能与JMX API或JSR 77 (J2EE management)不一致.它们 ...

  8. 《转载》Java异常处理的10个最佳实践

    本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...

  9. 《深入理解Java虚拟机:JVM高级特性与最佳实践》【PDF】下载

    <深入理解Java虚拟机:JVM高级特性与最佳实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062566 内容简介 作为一位 ...

随机推荐

  1. JavaScript初学者应注意的七个细节(转)

    http://www.cnblogs.com/lhb25/archive/2011/01/10/1932284.html 每种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任 ...

  2. Python全栈--7.3--模块补充configparser--logging--subprocess--os.system--shutil

    模块补充: 一.configparser用于处理特定格式的文件,其本质是利用open来操作文件 继承到2版本 configparser 实现了更多智能特征,更有壳预见性,新的应用更偏好这个版本, 处理 ...

  3. TFS与Eclipse、Microsoft Visual Studio等客户端以webservice进行交换。

    TFS与eclipse.Microsoft Visual Studio等客户端以webservice进行交互. 参考地址: http://server_ip:8080/tfs/项目区域/version ...

  4. [z] error C2471 错误

    error C2471: 无法更新程序数据库“d:/Work/ Project/FBReader/debug/vc90.pdb” fatal error C1083: 无法打开程序数据库文件:“d:/ ...

  5. python在不同层级目录import模块的方法

    使用python进行程序编写时,经常会使用第三方模块包.这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导 ...

  6. mfc中Button、Edit Control和MFC EditBrowse Control的用法

    [前(fei)言(hua)] 写LL(1)分析器被CString转string卡了一个多小时也是醉了. 趁着还算清醒写下这次用到的控件的使用方法好了. 这次实验的mfc用到了四个控件:Edit Con ...

  7. java读取properties配置文件方法(一)

    为了修改项目参数方便,需要使用properties配置文件: 首先是需要三个jar包(不同的jar包,读取配置文件的方式会有所不同,这里使用的是2.6版本的jar包) commons configur ...

  8. python多进程

    一.多进程池 from multiprocessing import Pool import time pool = Pool(processes=3) result=[];lr=range(t);a ...

  9. 洛谷P1738 洛谷的文件夹

    原题目:点我 题目是一个略水的题,我机制地用面向对象做了...所以代码量急剧加大,100行233 模拟即可,字符串处理麻烦点.如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹. 提示:高能,指针 ...

  10. linux上配置网络/安装vsftp服务器

    1 准备用yum方式安装,小红帽linux原版不注册无法适用,只好安装centos系统 2 安装好centos系统注意事项: 硬盘得是IDE 配置好网络必须通,eth0的配置文件设置一下,联网启用 c ...