zoukankan      html  css  js  c++  java
  • attilax.java 注解的本质and 使用最佳实践(3)O7

    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)

  • 相关阅读:
    检测Linux硬盘IO数据
    获取OrangePI板子CPU温度
    ASP.Net开发WebAPI跨域访问(CORS)的精简流程
    一些常用复合命令
    关于Linux的虚拟内存管理
    Linux中组 与 用户的管理
    linux加载与使用ko驱动
    7z命令行 极限压缩指令
    nodejs的POST请求
    案例:用ajax 方法 解析xml
  • 原文地址:https://www.cnblogs.com/attilax/p/15199184.html
Copyright © 2011-2022 走看看