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

我们应该始终覆盖等于吗?

贺恩
2023-03-14
问题内容

在编写自己的类时,是否总是有必要重写equals(Object o)

如果我不这样做,它将自动检查所有字段是否相同?还是只是检查两个变量是否指向同一个对象?


问题答案:

如果正在编写将要以某种方式比较其对象的类,则应重写equalshashCode方法。

不提供显式equals方法将导致equals从超类继承该方法的行为,并且在超类为Object类的情况下,它将成为Java
API规范中针对Object该类设定的行为。

提供equals方法的一般约定可以在Object该类的文档中找到,特别是equalsand
hashCode方法的文档。



 类似资料:
  • 问题内容: 我一直在研究PDO 。我知道用PDO准备我的SQL语句可以防止发生SQL注入。 代码示例: 通过将ID绑定为数字,并且Title是字符串,我们可以限制当有人尝试在代码中进行SQL注入时所造成的损害。 我们是否应该始终将值与a绑定,以便可以限制在SQL注入中可以从数据库中提取的内容?这样在执行PDO时会增加PDO的安全性吗? 问题答案: 一个有两个问题。重要的是不要混淆它们 我们是否应该

  • 我在MyClass中有一个@Override for equals(): 相当标准。事实上,它遵循Java最佳实践 在以后的生活中,我在另一个子包类(我的控制器类)中有这个: 我的问题是. equals()在这里总是失败: 因为java说。getClass()和o.getClass()不相等。当我调试代码(在Intellij IDEA 2022.1 UE中)时,我看到: this.get类()=M

  • 问题内容: 我有下面的课程 我想创建一个全局队列,如果该对象存在于队列B中,则应该允许添加该全局队列,但反之则不行。因此,在#1之前,我循环遍历set内的元素,并在元素上添加了false。 但是1正在调用B.equals(C),它返回true,因此mySet在此行之后只有一个C对象 2再次调用返回真值的B.equals(C)并删除现有对象C。在这种情况下,它不是C.equals(B)吗?我希望这条

  • 我有一个项目,使用SonarQube来分析我的代码。正如标题所示,尽管我有多个JUnit测试,但在SQ报告(在我的服务器上)中覆盖率指标总是显示为0。我目前运行以下命令 在詹金斯建立我的项目时(詹金斯·马文项目)。 我有类似的问题前一段时间在不同的项目。我设法通过这篇文章解决了它。然而,这一次却无济于事。搜索了一下,找到了第1条和第2条(还有一些想法类似的)。两人都提出了一些好建议,但不幸的是,没

  • 问题内容: 我收到“ HTTP错误500:内部服务器错误”响应,但是我仍然想读取错误HTML中的数据。 使用Python 2.6,我通常使用以下命令获取页面: 尝试在失败的URL上使用它时,出现异常: 如何在返回内部服务器错误的同时获取此类错误页面(带有或不带有)? 请注意,在Python 3中,相应的例外是。 问题答案: 该 是一个类似文件的对象。您可以先捕获它,然后捕获它的内容。

  • 似乎有很多关于它的问题,但许多问题是他们无法获得他们想要的触摸事件,并通过覆盖onDown()并返回true来解决,它说来自开发人员文档 最佳实践是实现一个返回true的onDown()方法。这是因为所有手势都以onDown()消息开头。如果从onDown()返回false,则为GestureDetector。默认情况下,SimpleOnGestureListener会这样做,系统假设您想忽略手势