我有一个带有一些字段的类 Player:
String name;
Point position;
Action action;
“姓名”字段是一个键,不能有 2 个玩家同名。所以在我看来,如果“名称”(可能忽略大小写)相同,它们就是相等的。那么我是只使用 String.equalsIgnoreCase(String) 还是同时检查其他字段?
1)是否应该在Player的equals方法中检查name字段?
2) 如果其他字段不相同,是否应该在 equals 方法中抛出错误?
3) 只为子类检查一个字段是否明智,因为即使在子类中名称相同,也表示相同的玩家,或者我应该选择另一种方法来比较它吗?示例:
class MovingPlayer extends Player{
Point destination;
因此“名称”字段仍然是键(类似于子类间键)。
提前致谢,Tjen
最佳答案
您应该问自己这个问题——您的应用程序中是否可能存在两个具有相同名称属性和两个不同位置属性的对象?如果是这样,那么您应该实现 equals 方法以使用所有相关字段。
您不会在 equals 方法中抛出错误。你返回 true 或 false。
您的子类可以覆盖 equals 方法。在那个重写的方法中,您可以检查父类(super class)是否相等,只有当它们相等时,您才能继续进行额外的检查。
关于java - 我可以只使用关键字段来检查是否相等吗?我可以通过子类使用 equals 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6820683/