我有一个名为Produto
的班级和一个名为Fatura
的班级,最后一个班级有private long nif
和private ArrayList<Produto> lista = new ArrayList<Produto>();
我的equals()
方法:
public boolean equals (Object o) {
if (o != null && this.getClass() == o.getClass()) {
Fatura f = (Fatura) o;
return (this.nif == f.nif && f.lista.equals(o));
}
return false;
}
在我的Main_test
上,我创建了三个Produto
。然后我创建两个Fatura
。我将Produto
添加到ArrayList
,然后将fatura1
设置为fatura2
:
fatura1 = fatura2;
然后我调用equals()
方法查看fatura1
是否等于fatura2
,但它返回false
我不知道为什么。它应该返回true
因为它们是相同的,它们具有相同的nif
和相同的ArrayList
。
由于
答案 0 :(得分:0)
您的结果是错误的,因为 lista 是 ArrayList 对象,而 o 是对象。您需要将您的alist提取到像 Futura
这样的对象中以下是一个示例:
你应该这样写:
return (this.nif == f.nif && f.lista.get(0).equals(o));
而不是:
return (this.nif == f.nif && f.lista.equals(o));
您正在将ArrayList与Object类进行比较,这导致您得到&#34; false&#34;作为你的结果。
答案 1 :(得分:0)
我认为问题在于:
f.lista.equals(o)
您没有将正确的参数传递给equals
。这样做:
f.lista.equals(this.lista)