Java收集方法
我开始学习Java,我有一个关于泛型的问题 在Java收集方法,java,Java,我开始学习Java,我有一个关于泛型的问题 在采集界面的方法中: boolean containsAll(集合c) 布尔removeAll(集合c) 布尔保留(集合c) 为什么参数集合c而不是集合c 非常感谢,因为需要指定E类型参数,而通配符?适用于每种类型。微妙的区别在于 E表示任何指定类型 ?表示任何未知类型 由于这些方法应该在任何未知类型的集合上工作,因此它们根本不指定类型参数E是一个类型变量?不是一个变量,是一个无法指定的占位符。JDK设计者希望可以编写如下代码: Collectio
采集
界面的方法中:
boolean containsAll(集合c)
布尔removeAll(集合c)
布尔保留(集合c)代码>
为什么参数集合c
而不是集合c
非常感谢,因为需要指定E
类型参数,而通配符?
适用于每种类型。微妙的区别在于
E
表示任何指定类型
?
表示任何未知类型
由于这些方法应该在任何未知类型的集合上工作,因此它们根本不指定类型参数E
是一个类型变量<代码>?
不是一个变量,是一个无法指定的占位符。JDK设计者希望可以编写如下代码:
Collection<String> strings = Arrays.asList("foo", "bar", "baz");
Collection<Object> objects = Arrays.asList("foo", 123);
strings.removeAll(objects);
// strigns now contains only "bar" and "baz"
Collection strings=Arrays.asList(“foo”、“bar”、“baz”);
集合对象=Arrays.asList(“foo”,123);
strings.removeAll(对象);
//strigns现在只包含“bar”和“baz”
(上面的代码可能无法准确编译,因为我记不起Arrays.asList()
如何捕获类型参数,但它应该能够理解这一点。)
也就是说,因为您可以对任何一对对象调用
.equals()
,并获得有意义的结果,所以您实际上不需要将这些方法限制为特定的项目类型。检查好了,您应该首先问一些“更简单的问题”:为什么包含(对象)
不包含(E)
.smallwig.blogspot.com/2007/12/why-does-setcontains-take-object-not-e。html@LouisWasserman@unreputable好的,谢谢你的链接。我明白这一点。但是,为什么contains中的参数所有
而不是这些方法的可能重复项似乎都来自集合
,所以它们的作用域中确实有类型参数。