Java元注解最全详解(四大常用Java元注解)

开发 前端
Java元注解是java API提供的,是用于修饰注解的注解。通过使用Java元注解,可以为注解指定:作用范围、生命周期、是否可重复和是否继承等信息,从而提高注解的灵活性和可扩展性。

Java元注解

Java元注解是java API提供的,是用于修饰注解的注解。

通过使用Java元注解,可以为注解指定:作用范围、生命周期、是否可重复和是否继承等信息,从而提高注解的灵活性和可扩展性。

Java元注解分类

Java元注解是包括:@Retention、@Target、@Documented、@Inherited等。

如下图所示:

图片图片

这些元注解包括:

  • @Retention:用来指定注解的保留期限,可以设置为SOURCE、CLASS或RUNTIME。
  • @Target:用来指定注解可以应用于哪些程序元素,包括类、方法、变量、参数等。默认情况下,注解可以应用于所有程序元素。
  • @Documented:用来指定注解是否出现在Java文档中。
  • @Inherited:用来指定子类是否继承父类的注解。

下面我就分别来详解4大Java元注解@mikechen

1.@Target

@Target用于指定注解的作用范围,它的取值包括:

图片图片

  • ElementType.TYPE:用于注解类、接口、枚举和注解类型。
  • ElementType.FIELD:用于注解字段、枚举常量。
  • ElementType.METHOD:用于注解方法。
  • ElementType.PARAMETER:用于注解方法参数。
  • ElementType.CONSTRUCTOR:用于注解构造器。
  • ElementType.LOCAL_VARIABLE:用于注解局部变量。
  • ElementType.ANNOTATION_TYPE:用于注解其他注解类型。
  • ElementType.PACKAGE:用于注解包。

@Target示例:

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;


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

这个示例中,@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})指定了MyAnnotation注解可以用于类、字段和方法。

2.@Retention

@Retention用于指定注解的生命周期,它的取值包括:

图片图片

  • RetentionPolicy.SOURCE:注解只保留在源代码中,编译时被忽略。
  • RetentionPolicy.CLASS:注解被编译到字节码中,但运行时被忽略(默认值)。
  • RetentionPolicy.RUNTIME:注解在运行时也保留,并可以被反射机制读取。

@Retention示例:

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


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

这个示例中,@Retention指定了MyAnnotation注解的保留策略为RUNTIME,即可以在运行时获取到该注解的信息。

3.@Documented

@Documented指定注解是否包含在JavaDoc中,默认情况下注解不会被包含在JavaDoc中。

如果想让注解被包含在JavaDoc中,就需要使用@Documented注解。

@Documented示例:
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


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

这个示例中,@Documented注解指定了MyAnnotation注解可以被包含在JavaDoc中。

4.@Inherited

@Inherited用于指定注解是否可以被子类继承。

@Inherited示例:

import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    // ...
}
责任编辑:武晓燕 来源: mikechen的互联网架构
相关推荐

2021-12-30 12:30:01

Java注解编译器

2022-09-29 00:24:30

元宇宙虚拟现实教育

2010-09-15 13:35:25

SwingHibernateStruts

2022-06-17 11:35:28

元宇宙科技交互能力

2022-02-11 14:50:12

元宇宙物联网人工智能

2022-05-11 14:46:19

元宇宙虚拟世界人工智能

2011-06-22 08:38:35

Java EE

2018-04-04 15:50:23

攒机主机配置

2011-10-21 13:59:48

Java云计算

2021-07-16 10:32:33

前端元编程代码

2010-08-05 10:22:46

Flex效果

2010-07-19 10:05:07

jQuery

2020-09-24 10:00:50

SpringBoo

2021-11-03 15:15:21

Go重构技术

2015-07-17 09:50:16

Carthage优劣比较

2010-11-15 15:20:13

Oracle索引扫描

2010-06-03 09:09:10

Hadoop

2019-10-15 08:00:00

HTTP2HTTP前端

2010-07-02 14:34:53

UML类图

2015-01-05 14:18:23

普元SOABPS
点赞
收藏

51CTO技术栈公众号