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的元注解,相信大家对元注解都有了相应的认识,赶快结合元注解去自己定义相应注解吧!


目录
相关文章
|
2月前
|
Java 编译器 程序员
Java注解,元注解,自定义注解的使用
本文讲解了Java中注解的概念和作用,包括基本注解的用法(@Override, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface),Java提供的元注解(@Retention, @Target, @Documented, @Inherited),以及如何自定义注解并通过反射获取注解信息。
Java注解,元注解,自定义注解的使用
|
5月前
|
设计模式 Java 程序员
java动态代理(JDK和cglib)
java动态代理(JDK和cglib)
31 0
|
5月前
|
缓存 Java Maven
JDK 动态代理
JDK 动态代理
29 0
|
6月前
|
XML 设计模式 Java
Java中的注解,自定义注解
Java中的注解,自定义注解
|
Java
Java -- 元注解
@Target(ElementType.ANNOTATION_TYPE):指定该注解可以用于注解类、接口或枚举类型。 @Retention(RetentionPolicy.RUNTIME):指定该注解的保留策略,即在程序运行时也可以访问到该注解。 @Documented:指定该注解应该被包含在 Java 文档中。 @Inherited:指定该注解可以继承自父类。
60 0
|
Java 编译器
JAVA-元注解和注解
JAVA-元注解和注解
Java注解--元注解
元注解的个人总结
|
Java Spring
jdk 动态代理
jdk 动态代理
|
Java
JDK之动态代理(JDK与CGLIB)与静态代理
代理类在程序运行时创建的代理方式被称为动态代理 静态代理中,代理类是自己定义好的,在程序运行之前就已经编译完成。然而动态代理,代理类并不是在Java代码中定义的,而是运行时根据我们在Java代码中的指示动态生成的。相比较静态代理,动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法,比如想要在每个代理方法前都加上一个处理方法,静态代理就需要在每个类内部加上这个方法
157 2
JDK之动态代理(JDK与CGLIB)与静态代理
|
Java Spring
JDK 动态代理与 CGLIB 有哪些区别?
Jdk 动态代理利用拦截器(必须实现InvocationHandler)加上反射机制生成一个代理接口的匿名类,在调用具体方法前调用。InvokeHandler来处理。
798 0
JDK 动态代理与 CGLIB 有哪些区别?