Java元注解 @Inherited 解析
创始人
2024-04-16 04:21:39
0

场景:
在自定义注解中,估计大家都知道三大必备元注解,分别为:@Target、@Retention、@Inherited,前两者不再赘述解释,主要是 @Inherited 可能还有人不太明白,一起看下

一、@Inherited 顾名思义,可被继承的注解

1、分别定义注解 ATable、BTable,如下:

package com.hkl.mpjoin.modules.testAnnotations.annotations;import java.lang.annotation.*;/*** 

Description:A注解标识

*

Author:hkl

*

Date:2022/12/2

*/ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface ATable {String name() default ""; }
package com.hkl.mpjoin.modules.testAnnotations.annotations;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 

Description:B注解标识

*

Author:hkl

*

Date:2022/12/2

*/ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface BTable {String name() default ""; }

2、分别定义 DTO 测试用

TestAnnotationDtoOne

package com.hkl.mpjoin.modules.testAnnotations;import com.hkl.mpjoin.modules.testAnnotations.annotations.ATable;/*** 

Description:测试注解dto类1

*

Author:hkl

*

Date:2022/12/2

*/ @ATable public class TestAnnotationDtoOne {public String testOneStr = "TestAnnotationDtoOne";}

TestAnnotationDtoTwo

package com.hkl.mpjoin.modules.testAnnotations;import com.hkl.mpjoin.modules.testAnnotations.annotations.BTable;/*** 

Description:测试注解dto类2

*

Author:hkl

*

Date:2022/12/2

*/ @BTable public class TestAnnotationDtoTwo extends TestAnnotationDtoOne {public String testTwoStr = "TestAnnotationDtoTwo";}

TestAnnotationDtoTwo 继承 TestAnnotationDtoOne

二、获取注解验证

1、父类注解标记 @Inherited 的情况

        //验证 @Inherited 元注解 startClass testAnnotationDtoTwoClass = TestAnnotationDtoTwo.class;Annotation[] annotations = testAnnotationDtoTwoClass.getAnnotations();System.out.println("annotations = " + Arrays.asList(annotations));//验证 @Inherited 元注解 end

输出:

annotations = [@com.hkl.mpjoin.modules.testAnnotations.annotations.ATable(name=""), @com.hkl.mpjoin.modules.testAnnotations.annotations.BTable(name="")]

可以获取到 ATable、BTable 两个注解

2、父类注解没有标记 @Inherited 的情况

        //验证 @Inherited 元注解 startClass testAnnotationDtoTwoClass = TestAnnotationDtoTwo.class;Annotation[] annotations = testAnnotationDtoTwoClass.getAnnotations();System.out.println("annotations = " + Arrays.asList(annotations));//验证 @Inherited 元注解 end

输出:

annotations = [@com.hkl.mpjoin.modules.testAnnotations.annotations.BTable(name="")]

只可以获取到 BTable 注解

三、总结

1、@Inherited 元注解的作用是标记自定义注解是否可以被继承
2、被 @Inherited 标记的自定义注解,可以被自定义注解标记的类的子类 class 获取到

相关内容

热门资讯

起诉闺蜜借款被驳回?平远法院审... 近日,平远法院审理了一起民间借贷纠纷。原告小洁起诉闺蜜小青,要求归还6000元借款,并提交了微信转账...
广西“上里西游记”表演团队走红... 在“上里西游记”的直播间,身穿红袈裟、骑着白马的“唐僧”跟着“孙悟空”和“猪八戒”走在前面,“沙和尚...
政策组合拳助力“十五五”良好开... 岁末年初,政策窗口期至关重要。 中央经济工作会议部署落定,国家发展改革委已率先行动,抢抓时间窗口,主...
思创医惠:收到杭州市公安局《移... 每经AI快讯,12月31日,思创医惠(300078.SZ)公告称,公司收到杭州市公安局出具的《移送审...
明星电力:员工生育严格执行国家... 有投资者在互动平台向明星电力提问:“您好,请问公司是否针对员工生育或育儿设有相关的福利或激励政策? ...
高科技产业商业秘密保护的挑战与... 一、高科技产业商业秘密纠纷频发 智能驾驶、芯片、动力电池等高科技产业,商业秘密纠纷频发。2025年7...
百利科技(603959)披露公... 截至2025年12月31日收盘,百利科技(603959)报收于5.74元,较前一交易日下跌1.88%...
2025年山西破获经济犯罪案件... 中新网太原12月31日电 (记者 李庭耀)记者31日从山西省公安厅获悉,2025年,山西警方累计破获...
澄星股份:为员工提供符合国家法... 有投资者在互动平台向澄星股份提问:“您好,请问公司是否针对员工生育或育儿设有相关的福利或激励政策? ...
成都市新都区举行劳动纠纷处置比... 近日,2025年“新工司南”主题交流活动暨成都市新都区劳动纠纷处置比武竞赛在四川科伦药业股份有限公司...