JDK的四个元注解

简介: JDK的四个元注解

四个元注解

八:总结

一:前言

最近在研究JAVA注解,既然要研究注解,那么元注解肯定是绕不过去的,今天我就来盘一盘Java的4个元注解


二:什么是Java注解

在Java中,注解(Annotation)是一种元数据(metadata)的形式,它提供了一种在代码中添加元数据的方式,可以帮助我们更好地理解和组织代码,也可以让代码更具有可读性和可维护性。


注解可以被添加到类、方法、字段、参数等代码元素上,它们以@符号开头,后跟注解名称和一组圆括号,其中可能包含一些参数。


例如,下面是一个使用注解的例子:

@MyAnnotation(name = "demo", value = "test")
public class MyClass {
    //...
}

-在这个例子中,@MyAnnotation就是一个注解,它被应用于MyClass类上,并提供了两个参数:name和value。当编译器或运行时环境遇到注解时,它会根据注解的定义来处理相应的代码元素。


三:@Target 注解

3.1 示例

@Target 注解用于指定注解可以应用于哪些元素。它包含一个 value 属性,可以指定一个 ElementType 数组。

例如:

@Target({ElementType.TYPE, ElementType.METHOD})
public @interface MyAnnotation {
    //...
}

上面的代码表示 MyAnnotation 注解可以应用于类和方法。


3.2 常用ElementType

常用的 ElementType 包括:


ElementType.TYPE:类、接口、枚举

ElementType.FIELD:字段

ElementType.METHOD:方法

ElementType.PARAMETER:方法参数

ElementType.CONSTRUCTOR:构造方法

ElementType.LOCAL_VARIABLE:局部变量

ElementType.ANNOTATION_TYPE:注解

ElementType.PACKAGE:包

四:@Retention 注解

4.1 示例

@Retention 注解用于指定注解可以保留多长时间。它包含一个 value 属性,可以指定一个 RetentionPolicy 枚举值。例如:

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    //...
}

4.2 常用RetentionPolicy

上面的代码表示 MyAnnotation 注解可以保留到运行时。常用的 RetentionPolicy 包括:


RetentionPolicy.SOURCE:只保留在源代码中,不会包含在编译后的 class 文件中。

RetentionPolicy.CLASS:保留到编译时,会包含在编译后的 class 文件中,但不会被加载到 JVM 中。

RetentionPolicy.RUNTIME:保留到运行时,会被加载到 JVM 中,并可以通过反射机制读取注解信息。

五:@Documented 注解

5.1 示例

@Documented 注解用于指定注解是否包含在 Java 文档中。如果一个注解被 @Documented 修饰,那么在使用 javadoc 命令生成文档时,该注解信息会被包含在文档中。例如:

@Documented
public @interface MyAnnotation {
    //...
}

六:@Inherited 注解

6.1 示例

@Inherited 注解用于指定注解是否可以被继承。如果一个注解被 @Inherited 修饰,那么它可以被子类继承。例如:

@Inherited
public @interface MyAnnotation {
    //...
}

注意,只有在被修饰的注解应用于类时,@Inherited 才会起作用。如果应用于其他元素(如方法或字段),则子类不会继承该注解。


七:为什么要有元注解

7.1 创造注解的机会

元注解,是专门用来定义注解的注解,所有的注解可以由四个元注解限定,这四个注解,给了我们一个可以创造注解的机会。就如同编程语言中的保留字一样,通过这些注解,定制我们需要的注解。

7.2 保留字

我们自己编写的注解一定要让编译系统认识,这样编译系统才能编译,产生相对应的作用。那么怎么才能认识呢?怎么用不变统一变化呢?JDK中用的就是元注解的方式,通过元注解,限定自定义注解的保留时间、修饰位置、是否有文档、是否有继承性、是否可以重复使用。

7.3 管理和控制

元注解是为了更好地管理和控制注解而产生的。Java中的注解(Annotation)是一种用于代码描述的元数据(metadata),它们提供了一种便捷的方式来为代码添加额外的信息。

7.4 避免错误

使用元注解可以更好地控制和管理注解,避免出现意外的错误,提高代码的可读性和可维护性。元注解使得注解能够更好地适应不同的使用场景,可以更好地满足不同开发者的需求。

八:总结

上文为大家讲述了4个JDK的元注解,相信大家对元注解都有了相应的认识,赶快结合元注解去自己定义相应注解吧!


目录
相关文章
|
3天前
|
Java 机器人 编译器
如何在Java中使用注解:自定义注解的实现
如何在Java中使用注解:自定义注解的实现
|
1天前
|
设计模式 Java 程序员
java动态代理(JDK和cglib)
java动态代理(JDK和cglib)
|
4天前
|
缓存 Java Maven
JDK 动态代理
JDK 动态代理
5 0
|
1月前
|
XML 设计模式 Java
Java中的注解,自定义注解
Java中的注解,自定义注解
|
1月前
|
搜索推荐 Java 编译器
Javac 编译自定义注解及分析 Lombok 的注解实现
Javac 编译自定义注解及分析 Lombok 的注解实现
103 0
|
11月前
|
Java 编译器
JAVA-元注解和注解
JAVA-元注解和注解
|
11月前
|
Java
Java注解--元注解
元注解的个人总结
|
Java Spring
jdk 动态代理
jdk 动态代理
|
搜索推荐 Java 编译器
Javac编译自定义注解及分析Lombok的注解实现
在上一篇中,我留下了几个疑问,我们使用lombok的注解时,为什么加了个注解就可以帮我们自动生成代码呢?是谁给我们做了这件事情呢?它的原理是什么样的呢?
843 0
Javac编译自定义注解及分析Lombok的注解实现