【发布时间】:2015-10-13 13:39:01
【问题描述】:
我有一个 Java 类,这里有一个例子:
public class Car {
private int fuelType;
private Date made;
private String name;
.
.
. // and so on
现在假设我有两个汽车对象,我想比较它们的所有变量是否相等。
现在,我通过覆盖方法 equals(Object o) 解决了这个问题,我检查了两个对象中的所有变量是否匹配。
这里的问题是,如果我有 20 个类,我将不得不在每个类中覆盖 equals(Object o)。
有没有办法创建某种通用方法,可以比较我传递给它的两个对象中的任何一个,并让我知道它们是否在每个变量中匹配?
【问题讨论】:
-
如果使用 Eclipse 右键单击 -> 源 -> 生成等于和哈希。生成的等号将使用您设置的任何字段进行比较。顺便说一句,没错,就是std方法
Object.equals(Object other)。 -
是的。您可以创建一个使用一些反射的助手,并最终得到只是绑定的脆弱代码,以便在某些时候产生问题。或者你可以把它吸一遍,然后通过你的 IDE 提供的 20 代窗口工作。
-
这是最简单的方法,也可以使用反射:stackoverflow.com/questions/1449001/…
标签: java