zoukankan      html  css  js  c++  java
  • 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注解教程及自定义注解


  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/bobo132/p/13950374.html
Copyright © 2011-2022 走看看