等于String和Int的覆盖

Aru*_*ung 1 java equals

我在该列表中有一个列表,我创建了一个对象.通过使用该contains()方法,我想检查对象是否已存在.为此,我重写了该equals()方法.一切都很完美.但是,当我尝试做同样的事情String,并int在equals()重写不会无法正常工作.为什么会这样?我刚发布了一些示例代码供参考.

public class Test 
{
private int x;

public Test(int n) 
{ 
x = n;
}

public boolean equals(Object o) 
{
return false; 
}

public static void main(String[] args) 
{
List<Test> list = new ArrayList<Test>();
list.add(new Test(3));
System.out.println("Test Contains Object : " + list.contains(new Test(3))); // Prints always false (Equals override)
List<String> list1 = new ArrayList<String>();
list1.add("Testing");
String a = "Testing";
System.out.println("List1 Contains String : " + list1.contains(a)); // Prints true (Equals override not working)
}
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*sen 11

String和Integer都是最终类,因此您不能将它们子类化.因此,您无法覆盖其equals方法.

但是,您可以将ArrayList子类化,并在现有的上创建自己的包含实现构建.