3

可能重复:
为什么 Java 集合删除方法不是通用的?

我对Collection中声明的 java 函数的签名有疑问。问题是:为什么签名add涉及E(我们的类型)但remove有参数 Object?

我在 WWW 上看到了这个问题的一个回复,但我不确定那个原因

“在删除中,我们只需要 1 个操作:equals 和 Object 提供它”

是合理的。

4

1 回答 1

1

我认为它是从前通用时代遗留下来的。add和方法都remove用于接受Object参数。引入泛型时,有充分的理由更改add方法,但实际上没有任何充分的理由更改remove方法(因为您引用的原因允许它保持原样)。

我的猜测是,如果它是从头开始设计的,Collection.remove它将采用通用参数,而不是匿名对象。

于 2011-12-04T06:58:23.113 回答