2013-10-10 48 views
0

我有一个内部类B并创建它的匿名实例。我该如何要求B班?制出的是getClass(), getEnclosingClass()假...我怎样才能要求班级类型的内部类?

public class A { 
    public static class B { 
    } 
    public static void main(String[] args) { 
     Class clazz = new B() {}.getClass(); 
     System.out.println("" + (clazz == B.class)); 
    } 
} 
+0

您并未创建'B'的实例,您正在创建'B'的匿名子类的实例。 –

回答

2

您可以拨打

Class clazz = new B() {}.getClass().getGenericSuperclass(); 

的Javadoc状态

返回表示实体 (类,接口的直接超类的Type,原始类型或void)由此类表示。

当您创建一个匿名内部类时,您正在扩展该类本身,因此它的类与父类不同,它是一个子类。

相关问题