网站首页 > 精选教程 正文
Java元注解是Java注解的重要特性,下面我就来详解常见的4大Java元注解@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Java元注解
Java元注解是java API提供的,是用于修饰注解的注解。
Java元注解作用
通过使用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原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-11-01 关于启动电容器的匹配 启动电容器怎么接线
- 2024-11-01 冷水机的基本运行参数包括哪些? 冷水机参数含义
- 2024-11-01 Java线程池解读:从入门到精通,核心参数全掌握!
- 2024-11-01 使用Java编写求和的代码 使用java编写求和的代码是什么
- 2024-11-01 稳压器启动电流多大? 稳压器输出多少正常
- 2024-11-01 Java容器化参数配置最佳实践 java容器有哪几种
- 2024-11-01 Java变量 java变量的数据类型分为两种
- 2024-11-01 深入理解JVM运行原理:从内存布局到执行流程的全面解析
- 2024-11-01 丹佛斯VLT2900变频器维修后试运行参数设置方法及教...
- 2024-11-01 Java 21:有什么新变化? java+21:有什么新变化?举例说明
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)