我在该列表中有一个列表我创建了一个对象。通过使用 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)
}
}
最佳答案
String 和 Integer 都是 final 类,所以你不能继承它们。因此,您不能覆盖它们的 equals 方法。
但是,您可以子类化 ArrayList 并在现有的基础上创建您自己的包含实现构建。
关于java - 等于重写 String 和 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037911/