在 Collection Interface 方法 boolean equals(Object obj) 中,任何 Object obj 都符合参数条件,还是只有 Collection c 符合参数条件?
In Collection Interface method boolean equals(Object obj) does any Object obj qualifies as parameter or only Collection c qualifies as parameter?
我有以下代码-
Collection collection1 = new ArrayList();
collection1.add(new Integer(1));
Collection collection2 = new ArrayList();
collection2.add(new Integer(1));
Integer integer = new Integer(1);
System.out.println(collection1.equals(collection2));
System.out.println(collection1.equals(integer));
输出-
true
false
结果符合预期。但是 Collection Interface 方法不应该是 - boolean equals(Collection c)
?
但是,它是 boolean equals(Object obj)
那么非Collection Object如何作为参数成功传递得到boolean输出true呢?
equals 方法是从 Object 继承而来的,您不能更改它的签名。例如,equals 方法的实现将负责验证传递的对象是否实际上是 Collection 的实例。
编辑:
更改 equals 方法的签名将导致 class 具有两个 equals 方法,这是不必要的。
我有以下代码-
Collection collection1 = new ArrayList();
collection1.add(new Integer(1));
Collection collection2 = new ArrayList();
collection2.add(new Integer(1));
Integer integer = new Integer(1);
System.out.println(collection1.equals(collection2));
System.out.println(collection1.equals(integer));
输出-
true
false
结果符合预期。但是 Collection Interface 方法不应该是 - boolean equals(Collection c)
?
但是,它是 boolean equals(Object obj)
那么非Collection Object如何作为参数成功传递得到boolean输出true呢?
equals 方法是从 Object 继承而来的,您不能更改它的签名。例如,equals 方法的实现将负责验证传递的对象是否实际上是 Collection 的实例。 编辑: 更改 equals 方法的签名将导致 class 具有两个 equals 方法,这是不必要的。