Pas*_*ass 2 java generics iterator
也许我错过了一些东西,但我想如果我这样宣布我的课程:
public class Something<T> implements Iterable<Iterable<T>> {
public Something(Iterable<Iterable<T>> input) {
...
Run Code Online (Sandbox Code Playgroud)
我应该能够实例化它:
ArrayList<ArrayList<String>> l = new ArrayList<ArrayList<String>>();
Something<String> s = Something<String>(l);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这给我一个错误.我认为ArrayLists是Iterable所以应该完全映射到我的构造函数定义.
您需要修改构造函数以接受任何扩展的内容 Iterable<T>
public Something(Iterable<? extends Iterable<T>> list){}
Run Code Online (Sandbox Code Playgroud)
原因是泛型类型无法从字面上扩展其他泛型类型.A List<String>不能分配给List<CharSequence>.关键字extends允许发生此类分配.
| 归档时间: |
|
| 查看次数: |
3831 次 |
| 最近记录: |