详解Java的getDeclaredClasses()方法:返回一个数组,该数组按声明顺序包含此 Class 对象所表示的类或接口的所有成员类和接口

  • Post category:Java

Java中getDeclaredClasses()方法详解

方法介绍

Java中getDeclaredClasses()方法是获取包含当前类所有内部类、枚举类型和注解类型的数组,不包含继承自父类的内部类。

public Class<?>[] getDeclaredClasses() throws SecurityException

方法参数

该方法没有传入参数。

方法返回值

该方法将当前类所有内部类、枚举类型和注解类型封装成一个数组返回,该数组元素的Type为java.lang.Class。

使用示例

示例1:获取类中所有内部类

public class OuterClass {
    private class InnerClass1 {
        void print() { System.out.println("This is InnerClass1"); }
    }

    protected class InnerClass2 {
        void print() { System.out.println("This is InnerClass2"); }
    }

    public void test() {
        InnerClass1 inner1 = new InnerClass1();
        InnerClass2 inner2 = new InnerClass2();

        Class<?>[] ch  = this.getClass().getDeclaredClasses();

        for(Class<?> clazz : ch){
            System.out.println(clazz.getName());
        }
    }

    public static void main(String args[]) {
        OuterClass outer = new OuterClass();
        outer.test();
    }
}

输出结果为

OuterClass$InnerClass1
OuterClass$InnerClass2

示例2:获取类中所有注解类型

public class Test {
    @SuppressWarnings("unused")
    private String name;

    @Deprecated
    public void emptyMethod() {
        // do something
    }

    public static void main(String[] args) throws Exception {
        Class<Test> clazz = Test.class;
        Class<?>[] cs = clazz.getDeclaredClasses();

        for(Class<?> c : cs){
            System.out.println(c.getName());
        }
    }
}

输出结果为

Test$1