我用一个String
字段构造了一个类。然后,我创建了两个对象,并使用==
运算符和.equals()
对它们进行了比较。下面是我所做的:
public class MyClass {
String a;
public MyClass(String ab) {
a = ab;
}
public boolean equals(Object object2) {
if(a == object2) {
return true;
}
else return false;
}
public boolean equals2(Object object2) {
if(a.equals(object2)) {
return true;
}
else return false;
}
public static void main(String[] args) {
MyClass object1 = new MyClass("test");
MyClass object2 = new MyClass("test");
object1.equals(object2);
System.out.println(object1.equals(object2));
object1.equals2(object2);
System.out.println(object1.equals2(object2));
}
}
编译后,结果显示两次false。如果两个对象有相同的字段- "test“,为什么是false?
发布于 2015-07-15 19:38:20
您应该重写equals
public boolean equals (Object obj) {
if (this==obj) return true;
if (this == null) return false;
if (this.getClass() != obj.getClass()) return false;
// Class name is Employ & have lastname
Employe emp = (Employee) obj ;
return this.lastname.equals(emp.getlastname());
}
发布于 2016-02-23 04:25:04
比较两个对象的最好方法是将它们转换成json字符串,然后比较字符串,这是处理复杂的嵌套对象、字段和/或包含数组的对象时最简单的解决方案。
示例:
import com.google.gson.Gson;
Object a = // ...;
Object b = //...;
String objectString1 = new Gson().toJson(a);
String objectString2 = new Gson().toJson(b);
if(objectString1.equals(objectString2)){
//do this
}
发布于 2012-11-15 05:38:38
看起来equals2
只是在调用equals
,所以它会给出相同的结果。
https://stackoverflow.com/questions/13387742
复制相似问题