2015-04-28 30 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