例如我有一个水果类。我创建了 2 个实例:
Fruit apple = new Fruit("apple");
Fruit orange = new Fruit("orange");
2 个实例的值不同,因此我正在寻找错误的答案。我重写了 .equals() 方法并编写了以下方法来进行测试:
@Override
public boolean equals(Object otherObject){
if(otherObject instanceof Fruit){
return true;
}
return false;
}
if(apple.equals(orange))
System.out.println("true");
else
System.out.println("false");
上述方法给了我正确的答案。根据我的理解,这是一个正确的响应,因为这只是测试它们是否属于同一类,这是真的。
但我无法测试实例本身的值。请指教。谢谢。
最佳答案
您应该包含您的 Fruit
类,但这是一种方法
static class Fruit {
private String name;
public Fruit(String name) {
this.name = name;
}
@Override
public boolean equals(Object otherObject) {
// check for reference equality.
if (this == otherObject) {
return true;
}
if (otherObject instanceof Fruit) {
Fruit that = (Fruit) otherObject;
// Check for name equality.
return (name == null && that.name == null)
|| name.equals(that.name);
}
return false;
}
}
public static void main(String[] args) {
Fruit apple = new Fruit("apple");
Fruit apple2 = new Fruit("apple");
Fruit orange = new Fruit("orange");
if (apple.equals(orange))
System.out.println("true");
else
System.out.println("false");
// You can also use the shorter
System.out.println(apple.equals(apple2));
}
输出
false
true
关于java - 如何检查2个类实例是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707840/