不确定如何完成这个 equals 方法
Not sure how to complete this equals method
有人可以帮我解决这个问题吗?我已经尝试查找其他示例以找到我需要做的事情并将 运行 保存到名为 EqualsBuilder 的东西中,这是我需要使用的东西吗?如果它不满足任何一个 IF,我是否需要让它再次调用 equals?
以下代码包含一个 class 定义和一个不完整的方法定义。 equals 方法用于比较建筑物。
如果建筑物具有相同的名称和楼层数(但不一定是同一栋建筑物),则 return 为真,否则为假。
public class Building {
private String name;
private int noOfFloors;
public boolean equals (Object rhs) {
if (this == rhs) {
return true;
}
if (!(rhs instanceof Building)) {
return false;
}
Building b = (Building) rhs;
// missing return statement
}
}
在 instanceOf 测试之后,您想将对象的字段与另一个对象进行比较。 Objects.deepEquals()
之类的东西应该可以很好地满足您的需求。
您现在唯一需要测试的是两个对象的字段。如果它们相等,那么你应该 return 为真,如果其中至少有一个不相等,那么你应该 return 为假。
由于在这种情况下您的字段是 int
和 String
,您可以对整数字段使用 ==
,对字符串字段使用 .equals()
。
像这样的东西应该可以很好地完成工作:
if(this.name.equals(b.name) && this.noOfFloors == b.noOfFloors){
return true ;
}
else{
return false;
}
public boolean equals (Object rhs) {
if (this == rhs) {
return true;
}
if (!(rhs instanceof Building)) {
return false;
}
Building b = (Building) rhs;
// This is what you're supposed to add. It will return true only if both
// object's attributes (name and number of floors) are the same
return this.name.equals(b.name) && this.noOfFloors == b.noOfFloors;
}
有人可以帮我解决这个问题吗?我已经尝试查找其他示例以找到我需要做的事情并将 运行 保存到名为 EqualsBuilder 的东西中,这是我需要使用的东西吗?如果它不满足任何一个 IF,我是否需要让它再次调用 equals?
以下代码包含一个 class 定义和一个不完整的方法定义。 equals 方法用于比较建筑物。 如果建筑物具有相同的名称和楼层数(但不一定是同一栋建筑物),则 return 为真,否则为假。
public class Building {
private String name;
private int noOfFloors;
public boolean equals (Object rhs) {
if (this == rhs) {
return true;
}
if (!(rhs instanceof Building)) {
return false;
}
Building b = (Building) rhs;
// missing return statement
}
}
在 instanceOf 测试之后,您想将对象的字段与另一个对象进行比较。 Objects.deepEquals()
之类的东西应该可以很好地满足您的需求。
您现在唯一需要测试的是两个对象的字段。如果它们相等,那么你应该 return 为真,如果其中至少有一个不相等,那么你应该 return 为假。
由于在这种情况下您的字段是 int
和 String
,您可以对整数字段使用 ==
,对字符串字段使用 .equals()
。
像这样的东西应该可以很好地完成工作:
if(this.name.equals(b.name) && this.noOfFloors == b.noOfFloors){
return true ;
}
else{
return false;
}
public boolean equals (Object rhs) {
if (this == rhs) {
return true;
}
if (!(rhs instanceof Building)) {
return false;
}
Building b = (Building) rhs;
// This is what you're supposed to add. It will return true only if both
// object's attributes (name and number of floors) are the same
return this.name.equals(b.name) && this.noOfFloors == b.noOfFloors;
}