java - 等于重写 String 和 Int

标签 java equals

我在该列表中有一个列表我创建了一个对象。通过使用 contains() 方法,我想检查对象是否已经存在。为此,我覆盖了 equals() 方法。到目前为止一切都很完美。但是当我尝试对 Stringint 做同样的事情时,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/

相关文章:

java - Java中 "=="和"equals"的区别

java - 克隆实现未通过 'equals' 测试,调试时所有变量/字段都相同

Java contains() 方法返回 False,即使重写的 equals() 返回 True

java - 矩形面向对象开发——Equals()方法

java - hibernate下什么时候需要实现Hashcode和Equals?

java - JTextPane 和换行符

java - 如何处理log4j的远程监控?

java - 如何分组然后映射流

java - 如何动态创建一个 FloatBuffer

java - 如何知道何时抛出异常