2013-10-10 75 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)由此類表示。

當您創建一個匿名內部類時,您正在擴展該類本身,因此它的類與父類不同,它是一個子類。

相關問題