Nig*_*ht0 2 java generics iterator signature
这可能只是Java迭代器构造函数的签名布局的问题.
必须T在类定义中指定迭代器类型(作为抽象类型或其他东西); 那么,为什么它的相应构造函数public GunmenIterator(List list)不 包含这个T迭代器类型呢?虽然通常T在迭代器中使用通用类型,但这只是一种设计选择以匹配其他方法吗?
public class GunmenIterator<T> implements Iterator<T> {
private List<T> list;
private Iterator<T> iter;
public GunmenIterator(List<T> list) {
this.list = list;
this.iter = list.iterator();
}
public static void main(String[] args) {
Iterator<Integer> gunmenIter = new GunmenIterator<Integer>(gunmen);
}
}
Run Code Online (Sandbox Code Playgroud)
如上所示,迭代器类型<Integer> 应该存在于初始化中(否则,将出现编译器警告).但是,<T>无法添加到构造函数的签名中.
您不需要<T>在构造函数签名中,因为构造函数是类的构造函数GunmenIterator<T>.因此暗示它的构造函数创建了一个GunmenIterator<T>.
重复这<T>将是多余的.构造函数总是创建它所属的类的实例.
| 归档时间: |
|
| 查看次数: |
1637 次 |
| 最近记录: |