Class中的getClasses与getDeclaredClasses方法作用于区别

Posted 进无止境

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Class中的getClasses与getDeclaredClasses方法作用于区别相关的知识,希望对你有一定的参考价值。

getClasses和getDeclaredClasses的区别:

getClasses得到该类及其父类所有的public的内部类。

getDeclaredClasses得到该类所有的内部类,除去父类的。

public class SpiMain {


    private class SpiMainPrivate {
    }

    public class SpiMainPublic {
    }
}


public class Main extends SpiMain{


    private class MainPrivate {
    }

    public class MainPublic {
    }
}

运行如下代码:
 System.out.println(Arrays.toString(Main.class.getClasses()));
 System.out.println(Arrays.toString(Main.class.getDeclaredClasses()));

  

输出:

[class anno.Main$MainPublic, class com.javartisan.spi.SpiMain$SpiMainPublic]
[class anno.Main$MainPrivate, class anno.Main$MainPublic]

 

 

对于注解

import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


@Retention(RetentionPolicy.RUNTIME) 
@Inherited
public @interface Component {
}


import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


@Component
@Retention(RetentionPolicy.RUNTIME)
public @interface Service {
}

  

 

java.lang.Class#getDeclaredAnnotation方法可以获取Service注解之上的Comnponent注解

 


以上是关于Class中的getClasses与getDeclaredClasses方法作用于区别的主要内容,如果未能解决你的问题,请参考以下文章

请问java中的反射机制与用法

2.User.class与user.getClass()方法的区别?或者说class是什么属性呢?

2.User.class与user.getClass()方法的区别?或者说class是什么属性呢?

java中getClass( )和class()的联系和区别

java.lang.Class java.lang.Object.getClass()' 在空对象引用上

getClass()和.class的区别