网站首页 > 精选教程 正文
@Inherited 是一个元注解,专门用来修饰注解,被 @Inherited 修饰的注解具备继承传递性。
通过代码来验证,首先创建一个自定义注解,但是不加 @Inherited 修饰
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Version {
String value() default "1";
}
创建一个父类,使用 @Version 注解
@Version
public class TestParentBean {
public void sayHello() {
System.out.println("Hello parent bean");
}
}
创建一个子类,不使用注解
public class TestBean extends TestParentBean {
public void sayHello() {
System.out.println("Hello bean");
}
}
通过反射查找注解并打印
public class AnnotationTest {
public static void main(String[] args) throws Exception {
// 读取当前类及父类的注解
Annotation[] annotations = TestBean.class.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation);
}
System.out.println("-----------");
// 读取当前类的注解
annotations = TestBean.class.getDeclaredAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation);
}
}
}
输出结果如下,说明不管是通过 getAnnotations() 方法或者是 getDeclaredAnnotations() 方法,都不能获取到父类的注解。
-----------
现在为 Version 添加 @Inherited 元注解
@Inherited
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Version {
String value() default "1";
}
再次执行输出结果如下,可以看到 getAnnotations() 是可以获取到父类的有 @Inherited 修饰的注解的,而 getDeclaredAnnotations() 则只能获取当前类的注解。
@test.annotation.Version(value=1)
-----------
注意:@Inherited 的适用范围
1、在接口上使用 @Inherited 修饰的注解,其实现类不会继承这个注解
2、父类的方法上使用 @Inherited 修饰的注解,其子类不会继承这个注解
- 上一篇: 详解Java中的注解
- 下一篇: 工程研发:Java的注解(Annotation)说明
猜你喜欢
- 2024-12-31 花个几分钟,带你再了解一下Java注解
- 2024-12-31 Java注解开发及原理
- 2024-12-31 工程研发:Java的注解(Annotation)说明
- 2024-12-31 详解Java中的注解
- 2024-12-31 Java 注解底层原理
- 2024-12-31 Java主要的5个标准注解如何使用?
- 2024-12-31 进阶指南!深入理解Java注解
- 2024-12-31 Spring Framework 配置元信息底层实现之Java注解
- 2024-12-31 5K字详解Java 注解及其底层原理
- 2024-12-31 不知道什么是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)
本文暂时没有评论,来添加一个吧(●'◡'●)