zoukankan      html  css  js  c++  java
  • 自定义注解的场景及实现

    java中有四种元注解:@Retention、@Inherited、@Documented、@Target

    @Retention
    注解的保留位置(枚举RetentionPolicy),RetentionPolicy可选值:

    SOURCE:注解仅存在于源码中,在class字节码文件中不包含
    CLASS:默认的保留策略,注解在class字节码文件中存在,但运行时无法获得
    RUNTIME:注解在class字节码文件中存在,在运行时可以通过反射获取到
    @Inherited
    声明子类可以继承此注解,如果一个类A使用此注解,则类A的子类也继承此注解

    @Documented
    声明注解能够被javadoc等识别(下面自定义注解处会有例子做介绍,点击查看)

    @Target
    用来声明注解范围(枚举ElementType),ElementType可选值:

    TYPE:接口、类、枚举、注解
    FIELD:字段、枚举的常量
    METHOD:方法
    PARAMETER:方法参数
    CONSTRUCTOR:构造函数
    LOCAL_VARIABLE:局部变量
    ANNOTATION_TYPE:注解
    PACKAGE:包

    自定义注解经常使用场景:

    1.生成文档.例如:@see,@param,@return 等

    2.代替配置文件功能.例如spring基于注解的配置

    3.在编译时进行格式检查。如@override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。

    不经常使用的场景:

    1.类属性自动赋值

    2.验证对象属性完整性

    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    @Target({ElementType.FIELD,ElementType.METHOD})
    @interface MyAnno{
        public String name() default "zhangsan";
        public String email() default "hello@example.com";
    }

     

  • 相关阅读:
    2014.7建兰NOIP模拟Day1 Running
    简单的数论函数模板
    二分图匹配的匈牙利算法
    手算平方根
    ...
    hdu 5396 Expression(区间DP+组合数)
    hdu 5693 D Game(区间DP)
    hdu 5151 Sit sit sit(区间dp+排列组合)
    hdu 4570 Multi-bit Trie(dp)
    hdu 2855 Fibonacci Check-up (矩阵)
  • 原文地址:https://www.cnblogs.com/goodbye-lazy/p/10194674.html
Copyright © 2011-2022 走看看