Java 检查同级类的实例

Java 检查同级类的实例,java,inheritance,Java,Inheritance,正如我们所知,我们可以使用instanceof操作符来检查对象A是否是类A的实例。类似地,我想知道是否还有其他方法可以检查对象A是否是类B的实例,其中类A和类B都扩展了X。即类A和类B是兄弟姐妹也许我误解了你,但是我在这里假设你不知道X,或者你想找到任何X的答案 好的,所有类都是兄弟类,就像在中一样,它们都有Object作为共同的祖先,所以您的方法总是返回true 您可能想做的是检查两个类最接近的祖先是什么,您可以使用反射来获取所有父类,如中所示: Class superClass = arg1

正如我们所知,我们可以使用
instanceof
操作符来检查对象A是否是类A的实例。类似地,我想知道是否还有其他方法可以检查对象A是否是类B的实例,其中类A和类B都扩展了X。即类A和类B是兄弟姐妹也许我误解了你,但是我在这里假设你不知道X,或者你想找到任何X的答案


好的,所有类都是兄弟类,就像在中一样,它们都有
Object
作为共同的祖先,所以您的方法总是返回true

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

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

并将它们进行比较(如果您在代码方面有问题,请发帖!)

也许我误解了您的意思,但我在这里假设您不知道X,或者您想找到任何X的答案


好的,所有类都是兄弟类,就像在中一样,它们都有
Object
作为共同的祖先,所以您的方法总是返回true

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

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

然后比较它们(如果您对代码有问题,请发帖!)

好的,如果您使用
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实例B
将为
false
,而
a实例a
将为
true


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

好的,如果您使用
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实例B
将为
false
,而
a实例a
将为
true


因此,如果您只想查看对象a是否是类B的实例
a instanceof B
就足够了,无论这些类实现了哪些接口。

“好吧,所有类都是兄弟类,就像在中一样,它们都将对象作为一个共同的祖先,因此您的方法将始终返回true”你的意思是
instanceof
method吗?@Thihara我的理解是,OP需要类似instanceof的东西,但它在具有相同祖先的类上工作。由于对象的祖先,这样的方法总是返回true“好吧,所有类都是兄弟类,就像在中一样,它们都有对象作为共同的祖先,所以您的方法总是返回true”你的意思是
instanceof
method吗?@Thihara我的理解是,OP需要类似instanceof的东西,但它在具有相同祖先的类上工作。由于对象的祖先,这样的方法总是返回true