我可以只使用键字段来检查等于吗?我可以通过子类使用 equals 吗?

发布于 2024-11-26 18:17:16 字数 504 浏览 1 评论 0原文

我有一个带有一些字段的玩家类:

String name;
Point position;
Action action;

“名称”字段是一个键,不能有 2 个同名的玩家。所以在我看来,如果“名称”(可能忽略大小写)相同,那么它们是相等的。那么我是只使用 String.equalsIgnoreCase(String) 还是也检查其他字段?

1)我应该检查Player的equals方法中的name字段以外的内容吗?

2)如果其他字段不相同,我应该在 equals 方法中抛出错误吗?

3)检查仅用于子类的一个字段是否明智,因为即使在子类中相同的名称也表示相同的玩家,或者我应该选择另一种方法来比较它?示例:

class MovingPlayer extends Player{
    Point destination;

因此“名称”字段仍然是键(类似于子类间键)。

预先感谢,Tjen

I have a class Player with some fields:

String name;
Point position;
Action action;

The 'name' field is sort of a key, there cannot be 2 players with the same name. So it seems to me they are equals if the 'name' (probably case ignored) is the same. So do I use the String.equalsIgnoreCase(String) only or do I check the other fields as well?

1) Should I check more than the name field in the equals method of Player?

2) Should I throw an error in the equals method if the other fields are not the same?

3) And is it wise to check that one field only for subclasses, because even in subclasses the same name, indicates the same player, or should I choose another method for comparing this? Example:

class MovingPlayer extends Player{
    Point destination;

So the 'name' field is still the key (something like an inter-subclass key).

Thanks in advance, Tjen

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

软的没边 2024-12-03 18:17:16
  1. 您应该问自己这样一个问题:您的应用程序中是否可能存在两个具有相同名称属性和两个不同位置属性的对象?如果这是真的,那么您应该实现 equals 方法来使用所有相关字段。

  2. 您不会在 equals 方法中抛出错误。您返回 true 或 false。

  3. 您的子类可以重写 equals 方法。在该重写的方法中,您可以检查超类是否相等,并且只有当它们相等时,您才能继续进行其他检查。

  1. You should ask yourself the question -- is it possible for two objects with the same name property and two different position properties to exist in your application? If that is true, then you should implement the equals method to use all relevant fields.

  2. You dont throw an error in the equals method. You return true or false.

  3. Your subclasses can override the equals method. In that overridden method, you can check for superclas equals and only if they are equal, you continue with additional checking.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文