• java 注解的使用


    契机

    一直以来做spingboot项目开发的时候,springboot的自定义注解用起来很是方便,但是对注解背后的原理总是懵懵懂懂的,知其然不知其所以然。这次借着做作业的机会,决定探究一下注解的原理和如何自定义注解,好好满足一下自己的好奇心。

    适用范围

    JDK 1.8

    什么是注解?

    Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。一些情况下,我们可以通过反射机制来获取标注的内容。通常来说,注解不影响代码的执行,但是极少数情况下我们可以利用注解来影响代码的执行。

    元注解

    有一类注解比较特殊。它们是用来注解的注解,或者说,用来标注其他注解。在JDK1.8中,这些注解有五个,称为元注解

    功能表
    元注解 功能
    @Retention 该元注解用于标注其他注解的生命周期。注解可以存在于源码(编译)、字节码(类加载)或JVM(运行)中
    @Target 该元注解用于标注其他注解可标注的类型。例如接口、类、枚举、注解、属性字段、枚举常量、方法、方法参数、构造函数、泛型甚至是包
    @Documented 该元注解用于将注解中的元素包含到 Javadoc 中
    @Inherited 一个被@Inherited标注了的注解修饰了一个父类,如果他的子类没有被其他注解修饰,则它的子类也继承了父类的注解。
    @Repeatable 该元注解标注的注解可以同时作用一个对象多次,但是每次作用时又可以代表不同的含义。
    可选参数
    元注解 可能的参数
    @Retention RetentionPolicy.SOURCERetentionPolicy.CLASSRetentionPolicy.RUNTIME
    @Target ElementType.TYPE(接口、类、枚举、注解),ElementType.FIELD(属性字段、枚举常量),ElementType.METHOD(方法),ElementType.PARAMETER(方法参数),ElementType.CONSTRUCTOR(构造函数),ElementType.LOCAL_VARIABLE(局部变量),ElementType.ANNOTATION_TYPE(注解),ElementType.PACKAGE(包),ElementType.TYPE_PARAMETER(泛型,即泛型方法、泛型类、泛型接口),ElementType.TYPE_USE(除了class以外的任意类型)

    示例

    //自定义注解timeLimit
    //Retention注解用于标明自定义注解的生命周期。当其值为RetentionPolicy.RUNTIME时,自定义注解在运行阶段仍存在于虚拟机中,可以通过反射机制来读取其中内容
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)//Target注解用于标明自定义注解可标注的类型。其值为ElementType.METHOD时,自定义注解可标注于方法上
    @interface timeLimit{
        int value() default 0;
    }
    
  • 相关阅读:
    zabbix3.4报警队列过多清理
    k8s安装nexus并导入第三方jar包
    kubeadmin安装最新版本的kubenets
    aws相关知识
    mysql忘记root密码做法
    mysql实现读写分离(proxy)与高可用(MGR)
    jvm调优
    zabbix监控php-fpm的性能
    脚本
    opencv demo
  • 原文地址:https://www.cnblogs.com/semiprimenumber/p/13832341.html
Copyright © 2020-2023  润新知