当前位置: 首页 > 面试题库 >

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

公羊灿
2023-03-14
问题内容

假设我有一个类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>

但是当然语法是错误的,如何在没有1000 if-else的情况下进行检查?


问题答案:

你的意思是

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

即使obj1obj2属于相同的特定类,也应返回true 。

但是,如果A与进行比较,则此方法将无效B extends A。如果您希望相等返回一个true(即使一个是另一个的子类型),则必须编写更强大的比较函数。我认为您可以通过循环使用getSuperClass()以实现层次结构树。

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



 类似资料:
  • 我有两个arraylist。employee类和user类的ArrayList。employee类将name、age、address作为字段。用户类将名称、年龄、地址作为字段。下面是两个列表 要检查用户是否和员工的地址相同。如果用户没有地址,则从员工处复制。

  • 问题内容: 在Python中查看两个文件在内容方面是否相同的最简单方法是什么。 我可以做的一件事是对每个文件md5进行比较。有没有更好的办法? 问题答案: 是的,我认为如果必须比较多个文件并存储哈希以供以后比较,则对文件进行哈希处理将是最好的方法。由于哈希可能会发生冲突,因此可能会根据用例进行逐字节比较。 通常,逐字节比较将是足够且高效的,哪个filecmp模块也已经执行了其他操作。 参见http

  • 问题内容: 我知道我可以在Swift中检查var的类型 但是如何检查两个实例具有相同的类?以下内容不起作用: 我可以轻松地添加一个“类”函数,并在每个子类中对其进行更新,以返回唯一的内容,但这似乎有点麻烦。 问题答案: 我觉得有必要首先引用 Swift编程语言 文档: 类具有 结构没有的 其他功能: 通过类型转换,您可以在运行时检查和解释类实例的类型。 因此,这对将来的某人可能会有所帮助: 和测试

  • 问题内容: Hashcode()和equals()的概念是 1)如果两个对象根据equal()相等,则在这两个对象中的每一个上调用hashcode方法应产生相同的哈希码。 另一个是 2)如果两个对象根据equal()不相等,则不需要在两个对象中的每一个上调用hashcode方法必须产生不同的值。 我尝试并理解了第一个,这是第一点的代码。 上面的程序为两个不同的对象提供了相同的哈希码。 有人可以用一

  • 如何检查两个数组(循环)是否具有相同顺序的相同元素。例如,让我们以数组[1,2,3,4]为例。 对于[2,3,4,1]、[3,4,1,2]、[4,1,2,3],测试应返回true,但对于[1,3,2,4]、[1,4,2,3]或[1,2,3,5]则不返回true。 我最初的方法是找到第一个匹配项——每个数组中一个相等的元素——并将这两个元素视为各自数组的初始元素,我逐个比较了数组的其余元素。 有没有

  • 假设您有两个相同的对象(意味着它们分别具有相同的属性和相同的值)。 你如何测试平等性? 例