//(a)
public <T extends Iterator<E> & Iterable<E>> T iterX(){
}
//(b)
public class ValueIterx implements Iterator<E>,Iterable<E>{
//... ...
public void Iterator<T> iterator() {
return this; //(1)
// return new XXXX() //(2)
}
}
(a) 方法,除了返回null,其他都是不可以的。
(b) 方法,存在潜在问题,尽量别用注意。
原因没看到官方解释,狗到一些:
1.兼容1.4,否则Iterator无法编译。
2.潜在问题:
(1)写法,有问题,返回一个可变的this。
(2)写法,没问题,返回别的对象或自己的快照。