• java注解入门


    1.元注解
    /**
     * @author bobo (bo.wang@laowantong.cc)
     * @date 2018年01月28日
     * @desc 演示自定义注解
     */
    
    
    /**
     * 元注解: 指的是注解的注解, 包括 @Documented, @Target, @Inherited, @Retention 四种
     *
     * 1. @Documented 表明了这个注解应该被 javadoc工具记录
     *      默认情况下, javadoc是不包括注解的, 但如果申明时指定了 @Documented, 那么它就会被 javadoc之类的工具处理,
     *      所以注解类型信息也会被包括在生成的文档中.
     *
     * 2. @Target 用于设定注解的使用范围, Target通过 ElementType来指定注解可使用范围的枚举集合
     *      取值如下:
     *          ElementType.METHOD                  可用于方法上
     *          ElementType.TYPE                    可用于类或接口上
     *          ElementType.ANNOTATION_TYPE         可用于注解类型上 (被 @interface修饰的类型)
     *          ElementType.CONSTRUCTOR             可用于构造方法上
     *          ElementType.FIELD                   可用于字段上
     *          ElementType.LOCAL_VARIABLE          可用于局部变量上
     *          ElementType.PACKAGE                 用于记录 java文件的 package信息
     *          ElementType.PARAMETER               可用于参数上
     *
     *
     * 3. @Inherited 表明了某个被标注的类型是被继承的
     *      如果一个使用了 @Inherited修饰的 Annotation类型被用于一个类, 那么这个 Annotation将被用于该 class的子类
     *      注意:
     *        1. @Inherited annotation类型是被标注过的 class的子类所继承. 类并不从它所实现的接口继承 annotation
     *              方法并不从它所从重载的方法继承 annotation
     *        2. 当 @Inherited annotation类型标注的 annotation的 Retention是 RetentionPolicy.RUNTIME, 则反射 API增强了这种继承性
     *              如果我们使用 java.lang.reflect去查询一个 @Inherited annotation类型的 annotation时, 反射代码将展开工作:
     *              检查 class和其父类, 直到指定的 annotation类型被发现, 或者到达类继承结构的顶层
     *
     *
     * 4. @Retention (保留)注解说明到 Java类的哪个阶段, 有三个值
     *      * RetentionPolicy.SOURCE    这种类型的注解只会在源码级别保留, 编译时就会被忽略
     *      * RetentionPolicy.CLASS     这种类型的注解在编译时会被保留, 在 class文件中存在, 但 JVM将会忽略
     *      * RetentionPolicy.RUNTIME   这种类型的注解会被 JVM保留, 所以它们能在运行时被 JVM或其它使用反射机制的代码所读取和使用
     *
     */
    
    @Documented
    @Target({ElementType.METHOD, ElementType.FIELD})
    @Inherited
    @Retention(RetentionPolicy.RUNTIME)
    public @interface DataSourceSelector {
    
        String value();
        
    }

    参考文章

    1.  详解JDK 5 Annotation 注解之@Target的用法介绍

    2. Java注解教程及自定义注解


  • 相关阅读:
    九宫格小游戏源码分享
    DeviceOne 竟然做出来如此复杂的App
    DeviceOne 让你一见钟情的App快速开发平台
    MySQL初始化
    MySQL的操作
    MySQL
    Library
    Python模块
    Anaconda的使用
    面向对象之成员修饰 特殊成员 methclass
  • 原文地址:https://www.cnblogs.com/bobo132/p/13950374.html
Copyright © 2020-2023  润新知