java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @Inherited注解

SpringBoot中的@Inherited注解详解

作者:sunnyday0426

这篇文章主要介绍了SpringBoot中的@Inherited注解详解,@Inherited是一个标识,用来修饰注解,如果一个类用上了@Inherited修饰的注解,那么其子类也会继承这个注解,需要的朋友可以参考下

1. @Inherited

作用:

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

注意:

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<Subclass> 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<Subclass> 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注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文