严格来说,这样的实现是错误的。
这样做的原因是,即使对象不是type
E,它仍然可以
true在
equals()调用时返回。
假设有一秒钟,您有一个这样的类:
public class FakeString { private final String value; public FakeString(String value) { if (value == null) { throw new IllegalArgumentException(); } this.value = value; } public int hashCode() { return value.hashCode(); } public boolean equals(Object o) { return value.equals(o); }}
然后此代码将打印
true:
List<String> strings = Arrays.asList("foo", "bar", "baz");System.out.println(strings.contains(new FakeString("bar")));
只是要澄清一下:此行为是 有意的, 并且是
contains()采用a
Object代替的原因
E。
remove()顺便说一句,对于,也是如此。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)