Collection对象的特定类数组?

fab*_*ous 2 java arrays generics collections

也许我忽略了一些非常容易和明显的事情......

我有一个类似的方法接口

private void render(Collection<Object> rows);
Run Code Online (Sandbox Code Playgroud)

现在,我需要传递的对象是一个数组(来自枚举):

Module[] mods = Module.values(); 
widget.render(mods);
Run Code Online (Sandbox Code Playgroud)

当然这不起作用,但为什么这不起作用:

widget.render(Arrays.asList(mods))
Run Code Online (Sandbox Code Playgroud)

它将我的数组转换为Module的集合,而Module是一个对象......

Pau*_*ora 6

尝试将方法签名更改为:

private void render(Collection<?> rows);
Run Code Online (Sandbox Code Playgroud)

这就是说你的方法采用Collection任何类型的元素,而在它之前说Collection应该具体Object作为其类型参数.

使用这样的通配符将限制如何使用Collection传递给方法的方法,特别是在修改它时.render如果您需要更详细的建议,您可能想告诉我们您的方法正在做什么.

关于在Java中使用通配符集合,这篇文章值得一读:什么是PECS(Producer Extends Consumer Super)?