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是一个对象......
尝试将方法签名更改为:
private void render(Collection<?> rows);
Run Code Online (Sandbox Code Playgroud)
这就是说你的方法采用Collection任何类型的元素,而在它之前说Collection应该具体Object作为其类型参数.
使用这样的通配符将限制如何使用Collection传递给方法的方法,特别是在修改它时.render如果您需要更详细的建议,您可能想告诉我们您的方法正在做什么.
关于在Java中使用通配符集合,这篇文章值得一读:什么是PECS(Producer Extends Consumer Super)?
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |