假设我有一个包含来自成员类的类,其中一些嵌套(静态)和一些内部(非静态):
class Foo {
static class A {}
class B {}
static class C {}
}
我想获得Foo
的所有嵌套成员类,即A
和C
,但不是B
。这甚至可能吗?我知道如何列出所有成员类(使用Foo.class.getDesclaredClasses()
),我在isLocalClass()
上看到isMemberClass()
,isAnonymousClass()
或java.lang.Class
等方法,但我不知道{39}看到isNested()
或isInner()
之类的内容。
答案 0 :(得分:3)
您可以使用Modifier#isStatic(int mod)
(如果整数参数包含静态修饰符则返回true,否则返回false。)以了解内部类是否为静态。
像这样:
public class Demo {
public static void main(String[] args) {
Class foo = Foo.class;
Class[] declaredClasses = foo.getDeclaredClasses();
for (Class class1 : declaredClasses) {
System.out.println(Modifier.isStatic(class1.getModifiers()));
}
}
}
class Foo {
static class A {}
class B {}
static class C {}
}
true
false
true
注意: Class#getModifiers()
-
返回此类或接口的Java语言修饰符, 以整数编码。修饰符由Java Virtual组成 机器的公共,受保护,私有,最终,静态的常量, 抽象和界面;他们应该使用的方法解码 class Modifier。