我一直在阅读Effective Java,我遇到了无界的Collection类型<?>.然而,阅读让我相信你不能把除了之外的任何元素null放入一个实例中Collection<?>.
所以,我的问题是:Collection<?>当我们只能插入null元素时,实例化的目的是什么,因为它似乎毫无意义.我一直试图找出这个概念,但它似乎没有多大意义.任何帮助将非常感激.
Sma*_*ker 24
Collection<?>允许您创建接受任何类型Collection的参数的方法.例如,如果你想要一个方法,true如果a中的任何元素Collection等于某个值,则返回该方法,你可以这样做:
public boolean collectionContains(Collection<?> collection, Object toCompareTo) {
for (Object o : collection) {
if (toCompareTo.equals(o)) return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
可以通过以下任何类型调用此方法Collection:
Set<String> strings = loadStrings();
collectionContains(strings, "pizza");
Collection<Integer> ints = Arrays.toList(1, 2, 3, 4, 5);
collectionContains(ints, 1337);
List<Collection<?>> collections = new ArrayList<>();
collectionContains(collections, ILLEGAL_COLLECTION);
Run Code Online (Sandbox Code Playgroud)
从docs考虑以下Util方法
以下方法说明如何使用Iterator过滤任意Collection - 即遍历删除特定元素的集合.
static void filter(Collection<?> c) {
for (Iterator<?> it = c.iterator(); it.hasNext(); )
if (!cond(it.next()))
it.remove();
}
Run Code Online (Sandbox Code Playgroud)
这段简单的代码是多态的,这意味着Collection无论实现如何,它都适用于任何代码.
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |