查看两个对象是否具有相同的类型

2024-05-07

假设我有一个类 A,并且 B、C、D 都是从 A 派生的。
如果我想知道引用的对象的类型是什么,我可以声明:

// pseudo-code
if(obj instanceof B)
    < is B>
else if(obj instanceof C)
    < is C>
else
    <is D>

这是因为我确信从 A 派生的类只有 B、C 和 D。
但是,如果我只想检查两个引用是否指向同一类型的对象怎么办?
所以像这样:

if(obj1 instanceof obj2)
   <do something>

但语法当然是错误的。如何在没有一千个 if-else 的情况下检查这个?


你的意思是像

obj1.getClass().equals(obj2.getClass())

如果两者都返回 trueobj1 and obj2属于同一特定类别。

但如果你要比较的话,这是行不通的A with B extends A。如果您希望相等返回 true,即使一个是另一个的子类型,您也必须编写一个更强大的比较函数。我认为你可以通过循环来做到这一点getSuperClass()进入层次结构树。

我认为一个简单的解决方案也可以做到A.getClass().isAssignableFrom(B.getClass()), 假如说B extends A.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查看两个对象是否具有相同的类型 的相关文章

随机推荐