专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java 注解(java注解的原理)

temp10 2024-10-12 12:06:53 java教程 13 ℃ 0 评论

什么是注解#

注解是一种元数据,可以提供不属于成语本省的程序数据,注解对他们注释的代码没有直接影响。

注解的妙用#

  • 为编译器提供信息: 编译器可以使用Annotations 来检测编译错误和告警,如@SuppressWarnings, @Deprecated
  • 编译时处理: 虚拟机可以通过annotation信息,例如通过AbstractProcessor生成相应的Class, XML文件,
  • 运行时处理: 运行时通过反射可以从注解中获取额外的参数配置信息

定义注解#

  • 注解以@开头,告诉编译器后面的字符串为注解,如@Entity,Entity就是一个注解,
  • 注解可以包含元素,如果只有一个元素,则元素名可以省略,
@Author(
   name = "Jet Qin",
   date = "3/27/2003"
)
  • 注解如果不包含参数,则可以省略括号
  • @Author(name = "Jet Qin")
    @EBook
    class MyClass { ... }
    • 注解可以使用在类,属性,方法以及其他程序元素之前
    @Table(name="Entity")           // 类
    class Entity{
    
        @Column(name="ID")
        private String ID;          //属性
    
        @Getter
        private String getID(){     //方法
            return this.ID;
        }
    }

    元注解#

    java.lang.annotation中定义了一些注解,可以被用在其他注解之上,称为元注解

    Java 注解(java注解的原理)

    @Retention: 指明注解如何存储

    • RetentionPolicy.SOURCE – 注解之保留在源文件中,会被编译器忽略
    • RetentionPolicy.CLASS – 注解可以被编译器在编译时访问,JVM会忽略.
    • RetentionPolicy.RUNTIME – JVM可以在运行时访问.

    @Documented: 通过javadoc可以生成对应的java文档 @Target: 限制注解应用在何种类型数据上

    • ElementType.ANNOTATION_TYPE: 应用在注解类型上.
    • ElementType.CONSTRUCTOR: 应用在构造函数上.
    • ElementType.FIELD: 应用在累的属性和元素上
    • ElementType.LOCAL_VARIABLE: 应用在本地变量上.
    • ElementType.METHOD: 应用在方法上 .
    • ElementType.PACKAGE: 应用在包上.
    • ElementType.PARAMETER: 应用在参数.
    • ElementType.TYPE: 应用在类型上.

    @Inherited: @Inherited指明此注解是从父类继承的, 只能用于类的声明上.

    @Repeatable: @Repeatable是在Java8 中引进的,使用@Repeatable注解, 指明此注解可以被多次应用在其他属性上。

    Tags:

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表