Java GSON是否可以用于检查对象相等,而不是覆盖POJO类的相等?
我有如下类(跳过了getter和setter以及业务逻辑方法) 我希望能够比较上述类型的对象。它们也有方法,一些我跳过的静态最终常量。我是否可以按如下方式重写Java GSON是否可以用于检查对象相等,而不是覆盖POJO类的相等?,java,gson,equals,equality,Java,Gson,Equals,Equality,我有如下类(跳过了getter和setter以及业务逻辑方法) 我希望能够比较上述类型的对象。它们也有方法,一些我跳过的静态最终常量。我是否可以按如下方式重写equals方法 @Override public boolean equals(Object o) { Gson gson = new Gson(); String o1 = gson.toJson(this); String o2 = gson.toJson((cast)o); return o1.equ
equals
方法
@Override
public boolean equals(Object o) {
Gson gson = new Gson();
String o1 = gson.toJson(this);
String o2 = gson.toJson((cast)o);
return o1.equals(o2);
}
我知道这是懒惰的,但我正在尝试快速原型一些应用程序,这将节省我很多时间。我不关心性能,只关心正确性。只要您的类是POJO,是的,这将起作用。但是,如果您提供给
equals
方法的类型与this
的类型不同,那么您正在执行的强制转换可能会导致ClassCastException。如果发送了null
,它也会抛出异常
正如您所知,您还可以在大多数IDE中自动生成equals
方法。例如,在Eclipse中,您可以通过以下操作生成该方法:
右键单击包资源管理器中的类>“Source”>“Generate hashCode()and equals()”>检查应检查相等性的字段>“OK”
我不能真正谈论Intellij Idea,因为我没有使用它,但它可能会帮助你
我相信这样做更好更安全,因为它会在强制转换之前检查
null
值并检查类型。您还可以选择应检查哪些值是否相等,如果您想跳过某些最终值,这将非常有用。同意。另外,我认为GSON不能保证属性排序,如果在两次转换(可能是优化?)之间出现问题,这可能是一个问题。我不知道eclipse有用于equals的代码生成器。我还找到了toString()的代码生成器。这将节省我很多时间。您还可以使用右键单击包资源管理器中的类>“Source”>“generate getter and setters”>检查要生成getter/setters的字段>“OK”
@Override
public boolean equals(Object o) {
Gson gson = new Gson();
String o1 = gson.toJson(this);
String o2 = gson.toJson((cast)o);
return o1.equals(o2);
}