我的程序中有一个名为
Requirement
使用方法
test(List)
。
ItemRequirement
机具
要求
,包含
Item A
和
ItemRequirement.test(List)
退货
List.contains(A)
用于输入列表。
我遇到了一个问题,每当检查ItemRequirement时,它都会返回false,尽管它应该返回true。
我通过将以下语句放入ItemRequirement.test中对此进行了测试:
System.out.println(list.contains(A));
System.out.println(list.contains(B));
System.out.println(B.equals(A));
return list.contains(A);
控制台输出为
false
true
true
以及
return
是
false
。
我真的很困惑这里发生了什么,好像B.equals(A)和list.contents(B),list.contens(A)不应该也是真的吗?
我尝试过几个.equals()的实现,它们都有相同的错误,但主要的错误是使用Item的“name”字段,它是一个String。
equals(Item i) {
return this.name.equals(i.name);
}
编辑:我第一次发帖的时候应该提到这个,因为它可能很重要。A和B是同一对象。我有一个静态对象Item.TEST,a和B都指向Item.TEST