跳转到主内容
极星编程网:以代码为星,赴技术山海!

SpringBoot中的@Inherited注解详解

目录

1. @Inherited

2. 代码演示

2.1 创建注解2.2 创建父类子类2.3 测试

3. 反射

1. @Inherited

作用:

一个标识,用来修饰注解,如果一个类用上了 @Inherited修饰 的注解,那么其子类也会继承这个注解

注意:

接口用上个 @Inherited 修饰的注解,其实现类不会继承这个注解父类的方法用了@Inherited修饰的注解,子类也不会继承这个注解当用了 @Inherited 修饰的注解的 @Retention 是 RetentionPolicy.RUNTIME ,则增强了继承性,在反射中可以获取得到

2. 代码演示

2.1 创建注解AAnnotate@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Inherited public @interface AAnnotate {public String name() default "";}BAnnotate@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME) public @interface BAnnotate {public String name() default "";}2.2 创建父类子类创建父类SuperClass@AAnnotate public class SuperClass {private int SuperClassx;public int SuperClassy;public SuperClass() {}//私有private int SuperClassX(){return 0;}//公有public int SuperClassY(){return 0;}}创建子类Subclass@BAnnotate public class Subclass extends SuperClass {private int Subclassx;public int Subclassy;private Subclass() {}public Subclass(int i) {}//私有private int SubclassX() {return 0;}//公有public int SubclassY() {return 0;}}2.3 测试class TestMain {public static void main(String[] args) {Class clazz = Subclass.class;System.out.println("============================AnnotatedElement===========================");//获取自身和父亲的注解。如果@AAnnotate未加@Inherited修饰,则获取的只是自身的注解而无法获取父亲的注解。

System.out.println(Arrays.toString(clazz.getAnnotations()));System.out.println("------------------");}}

3. 反射

以下是对反射的拓展,与本文无关class TestMain {public static void main(String[] args) {Class clazz = Subclass.class;System.out.println("============================Field===========================");// 自身和父亲的公有字段System.out.println(Arrays.toString(clazz.getFields()));System.out.println("------------------");//自身所有字段System.out.println(Arrays.toString(clazz.getDeclaredFields()));System.out.println("============================Method===========================");//自身和父亲的公有方法System.out.println(Arrays.toString(clazz.getMethods()));System.out.println("------------------");// 自身所有方法System.out.println(Arrays.toString(clazz.getDeclaredMethods()));System.out.println("============================Constructor===========================");//自身公有的构造方法System.out.println(Arrays.toString(clazz.getConstructors()));System.out.println("------------------");//自身的所有构造方法System.out.println(Arrays.toString(clazz.getDeclaredConstructors()));System.out.println("============================AnnotatedElement===========================");//获取自身和父亲的注解System.out.println(Arrays.toString(clazz.getAnnotations()));System.out.println("------------------");//只获取自身的注解System.out.println(Arrays.toString(clazz.getDeclaredAnnotations()));System.out.println("------------------");}}到此这篇关于SpringBoot中的@Inherited注解详解的文章就介绍到这了,更多相关@Inherited注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:SpringBoot自定义注解及AOP的开发和使用详解springboot+redis自定义注解实现发布订阅的实现代码SpringBoot中的@MessageMapping注解详解Springboot+Jackson自定义注解数据脱敏的项目实践springboot中使用@NotNull注解无效解决方法SpringBoot中的@ResponseStatus注解处理异常状态码

相关文章