• 自定义注解的场景及实现


    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";
    }

     

  • 相关阅读:
    【Python】supervisor安装和管理celery
    【MySQL】pt-query-digest数据处理并关联业务
    【Python】pip国内安装源和yum恢复
    【Python】Celery异步处理
    【转】Java中堆和栈的区别
    三种简单排序算法
    哈夫曼(Huffman)编码
    SpringMVC之文件上传
    SpringMVC之类型转换
    SpringMVC之表单校验
  • 原文地址:https://www.cnblogs.com/goodbye-lazy/p/10194674.html
Copyright © 2020-2023  润新知