我们知道我们可以使用instanceof
运算符来检查对象 A 是否是类 A 的实例。同样,我想知道是否无论如何我们可以检查对象 A 是否是类 B 的实例,其中 A 类和 B 类扩展 X。即 A 类和 B 类是兄弟
问问题
484 次
2 回答
3
也许我误解了你,但我在这里假设你不知道 X,或者你想找到任何 X 的答案。
好吧,所有的类都是兄弟,因为它们都有Object
一个共同的祖先,所以你的方法总是会返回 true。
您可能想要做的是检查两个类的最近祖先是什么,您可以使用反射来获取所有父类,如下所示:
Class superClass = arg1.getClass();
Class superSuperClass = superClass.getSuperclass();
并将它们全部进行比较(如果您对代码有问题,请发布!)
于 2012-07-16T11:34:02.393 回答
0
好的,如果您使用instanceof
运算符,它会检查第二个参数的类型。例如
Interface X{};
Class A implements X;
Class B implements X;
Object a=new A();
Object b=new B();
在上面的层次结构中 a instanceof X
,b instanceof X
将返回true
. 但a instanceof B
会是false
一会儿。a instanceof A
true
因此,如果您只想查看 Object a 是否是 Class B 的实例,a instanceof B
则无论这些类实现哪些接口都足够了。
于 2012-07-16T11:50:27.077 回答