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. removeClass() 方法

    删除元素的class类别用removeClass() 方法,与addClass()方法对应.具体使用如下: 如果要删除 p 标记是 cls0 的类别,可以使用如下的代码: $("p" ...

  2. 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面

    [Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...

  3. UVA 753 A Plug for UNIX(二分图匹配)

    A Plug for UNIX You are in charge of setting up the press room for the inaugural meeting of the Unit ...

  4. -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable

    在 myEclipse 中 需要配置 解决方法: window --> preferences --> java --> installed JREs 设置 Default VM A ...

  5. jquery实现标签上移、下移、置顶

    eg:如在后台的标签列表中,实现上移.下移.置顶功能 思路: 1.先用到的克隆方法.clone(true): 即把当前要移动的项先保存好,备于后用. 2.找到当前标签所对应的相关元素及其相关方法: 如 ...

  6. 边表+SPFA

    传说中效率很NB的单元最短路径算法,传说中时间复杂度为O(kE),k为长度,平均值为2,不知道这话是谁说的,一说流传oi界几年了 边表就是数组模拟邻接表,没学会很难,学会很简单的样子啊 #includ ...

  7. T60上安装Gentoo笔记

    T60虽然已经很老了,也过了服役期限.但是从入手之后,相比与家里放着的几个其他的高配置"后辈",依然是手中的挚爱.4:3的屏幕,方方正正的内敛模型,很结实的钢筋铁骨,无论是性格还是 ...

  8. 数字电路-异同步 复位 线与 oc门

    1.同步电路和异步电路的区别是什么? 异步电路:主要是组合逻辑电路,用于产生地址译码器.FIFO或RAM的读写控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟,状态变化的时刻是不稳定的,通 ...

  9. App开发的过程

    直播App开发的过程 第一步:分解直播App的功能,我们以X客为例 视频直播功能,这是一款直播App最主要的功能,要能支持视频直播RTMP推流,使画面传输流畅.清晰(美颜后的清晰,你懂的聊天功能,用户 ...

  10. lab 7 函数超级多的类

    #include<iostream>#include<string>#include<cmath>using namespace std; class Ration ...