2015-04-28 28 views
-3
B extends B1, B1 extends B2, ... Bn extends A 

B b = new B(); 
A a = new A(); 

一個的instanceof A =>真實, b的instanceof A =>真正Java對象的instanceof類A僅

,但我想知道一個只直接實例。

+1

請問你能否進一步解釋一下你的意思是什麼 –

+0

接口怎麼樣? – Leo

+0

isDirectInstance(a,A) - > true,isDirectInstance(b,A) - > false –

回答

4

你爲什麼不和課堂比較?

public class ClassTest { 

    class A{ 

    } 

    class B extends A{ 

    } 


    public static void main(String[] args) { 
     ClassTest t = new ClassTest(); 
     A a = t.new B(); 

     System.out.println(a instanceof B); //true 
     System.out.println(a instanceof A); //true 

     System.out.println(a.getClass().equals(B.class)); //true 
     System.out.println(a.getClass().equals(A.class)); //false 
    } 

} 
1

您可以使用A.getClass()獲取對象的Class名稱。一旦你有了類名稱,你就可以構建你的directInstance邏輯

0

你可以檢查你的對象是否有與A.class相同的類對象。

A a = new A(); 
B b = new B(); 
System.out.println(a.getClass().equals(A.class)); //will display true 
System.out.println(b.getClass().equals(A.class)); //will display false