检查是否声明了静态类(使用反射)

时间:2013-06-05 06:41:30

标签: java reflection static-classes

尝试检查class K是否为A

的静态类
class A {
    private static class K {
        static final int MODE1 = 1;
        static final int MODE2 = 2;
    }
}

Class<?> c = A.class;
for( Class<?> item: c.getDeclaredClasses() ) {
    if( Modifier.isStatic(item.getModifiers()) ) {
        if( "K".equals(item.getSimpleName()) ) {
            // found it!
        }
    }
}

这是唯一的方法吗?迭代所有声明的类?对于我们getDeclaredMethod()的方法,对于我们getDeclaredField()的字段,但TTBOMK没有getDeclaredClass()或类似的字段。

1 个答案:

答案 0 :(得分:2)

你的意思是这样吗?

Class a = A.class;
Class k = Class.forName(a.getName()+"$K");

我不认为经常会这样做,所以你可能没有更“友好”的方法。