java - 我应该如何覆盖 API 类的 equals 方法?

标签 java overriding wrapper

我正在使用 libGDX API 的 Vector2 类,如果我想检查两个 vector 是否相等,我必须执行以下操作:

Vector2 vectA = new Vector2(0, 1);
Vector2 vectB = new Vector2(1, 1);

if (vectA.x == vectB.x && vectA.y == vectB.y) {
   return true;
}

这很不舒服,我正在考虑为这种情况创建一个 equals() 方法。哪个应该更好:

  1. 使用 equals(Vector2) 方法为 Vector2 类创建包装器
  2. 使用 equals(Vector2, Vector2) 方法创建 EqualUtil 类

第一个看起来更好(在我看来),但它可能不是一个“不错”的解决方案,而另一个更简洁但也有点简单。也欢迎不同的想法。

最佳答案

是的,你应该。

在我看来,最好创建一个 Wrapper(并且您还应该覆盖 hashCode() 以匹配新行为)。

这样做不仅会使代码更具可读性,还允许您使用诸如 HashSet 之类的集合。或依赖于 equals() 行为的其他方法。

这在逻辑上也是有意义的,因为您正在尝试创建一个方法来提供有关特定对象的数据 - 有什么更好的方法来显示它然后将其作为一个实例方法来实现?

关于java - 我应该如何覆盖 API 类的 equals 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232333/

相关文章:

java - 如何使用 log4j 抑制来自外部库的日志消息

java - 关于 Java 中带有方法重写的泛型的查询

node.js - 包装器中的 Redis、MongoDB 和 Node

java - Java 许可证 header 的注释样式

java - 在我刷新页面 Spring Mvc 之前,上传的图像不会显示

java - Android 操作系统覆盖应用程序字体

html - 为我的 wrapper 添加阴影边框

javascript - 如何使用动态参数包装 JavaScript 函数?

java - lsof 表明我的 java 进程正在泄漏/devices/pseudo/tl@0 :ticots

java - 使用配置文件的 Spring 默认接线