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

Java 检查是否声明了静态类(使用反射),java,reflection,static-classes,Java,Reflection,Static Classes,尝试检查类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.get

尝试检查
类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!
        }
    }
}
A类{
私有静态类K{
静态最终int模式1=1;
静态最终int模式2=2;
}
}
c类=A类;
对于(类项:c.getDeclaredClasses()){
if(Modifier.isStatic(item.getModifiers())){
如果(“K”.equals(item.getSimpleName())){
//找到了!
}
}
}
这是唯一的办法吗?迭代所有声明的类?对于方法,我们有
getDeclaredMethod()
,对于字段,我们有
getDeclaredField()
,但是TTBOMK没有
getDeclaredClass()
或类似的东西。

你是说这样吗

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

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

我不知道为什么不经常需要它。在我的例子中,我在静态类中定义了一些静态常量,在这个特定的例子中,我需要通过反射来检查它。我知道这回答了问题,但我有一个不同的例子,这不适用于。我将类对象的实例传递给一个方法,我需要验证该实例是否属于静态类。你会怎么做?在这种情况下,我是否需要采用原始问题中建议的方法,并通过
getEnclosuringClass()
方法查找该类是否包含在另一个类中,然后从中获取该类?如果对嵌套类(包括enum)执行此操作,则只有
enum
才需要getEnclosuringClass()您将获得位于或
null
中的类(如果不在另一个中)。对于
enum
我建议查看getSuperClass(),如果它不是
enum
的话,您就有了它在其中定义的实际
enum
类。