检查Sibling类的实例

时间:2012-07-16 11:30:37

标签: java inheritance

我们知道我们可以使用instanceof运算符来检查对象A是否是A类的实例。同样,我想知道是否存在我们可以检查对象A是否是B类的实例,其中,A类和B类都延伸X.即A类和B类是兄弟姐妹

2 个答案:

答案 0 :(得分:3)

也许我误解了你,但我假设你不知道X,或者你想找到任何X的答案。

嗯,所有类都是兄弟姐妹,因为它们都有Object作为共同的祖先,所以你的方法总是会返回true。

您可能想要做的是查看两个类的最近祖先是什么,您可以使用反射来获取所有父类,如:

Class superClass = arg1.getClass();
Class superSuperClass = superClass.getSuperclass();

并将它们全部进行比较(如果您的代码有问题,请发布!)

答案 1 :(得分: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 Bfalsea instanceof Atrue

因此,如果你只是想看看Object a是否是B类的实例a instanceof B就足够了,不管这些类实现了哪些接口。