我需要比较两个对象,如果名称相等则返回true,否则返回false。
public class Team {
private String TeamName;
public Team(String name)
{
TeamName = name;
}
// I was trying this way but I was not able to do it.
public boolean equals(Object object) {
if (TeamName.equals(objet.toString())) {
return true;
}
else{
return false;
}
答案 0 :(得分:2)
您应该在TeamName
课程中的name
字段替换Team
重复Team
是多余的,变量名称应以小写字母开头。
对于相等性,首先必须检查类型兼容性,然后可以通过比较equals()
字符串字段来使用name
方法。
而是直接使用String#equals(Object o)
方法,您可以使用Objects.equals(Object a, Object b)
来保留name
字段的空检查。
最后,当您覆盖equals()
时,hashcode()
也应如此
覆盖以保持这两种方法的一致性。
@Override
public boolean equals(Object object) {
if (!(object instanceof Team)){
return false;
}
Team otherTeam = (Team) object;
return Objects.equals(name, otherTeam.name);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
答案 1 :(得分:0)
您需要先将参数object
强制转换为Team
类型,以便比较其名称。
示例:
public boolean equals(Object object) {
if(object instanceof Team) {
Team team = (Team)object;
return this.TeamName.equals(team.TeamName);
}
return false;
}
答案 2 :(得分:0)
这不起作用,因为object.toString()
没有返回另一个对象的TeamName
成员变量的值(如果类Team
没有重写toString()
方法)。
在equals()
方法中,您应该:
Team
instanceof
对象
TeamName
变量,并将其与当前对象进行比较像这样:
public boolean equals(Object object) {
if (object instanceof Team) { // check if it is a Team
Team otherTeam = (Team) object; // cast to Team
return TeamName.equals(other.TeamName); // compare and return result
} else {
return false; // the other object is not a Team
}
}