我想知道是否有一种方法来扩展迭代器接口的功能.假设我们有一个实现Iterable接口的Class(在上面的例子中,我没有添加myFunction的Iterator接口的重写函数).
public class MyClass implements Iterable{
@Override
public Iterator iterator() {
return new Iterator() {
@Override
public boolean hasNext() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Tuple next() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void myFunction(){
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
如果我把这个代码放在另一个函数中,我会得到编译错误("找不到符号"),我想知道为什么会这样.
public void anotherFunction(){
MyClass a = new MyClass();
a.iterator().myFunction();
}
Run Code Online (Sandbox Code Playgroud)
kan*_*kan 10
当然是.您可以创建另一个界面:
interface MyBetterIterator extends Iterator
{
void myFunction();
}
Run Code Online (Sandbox Code Playgroud)
然后让方法返回你的类型:
public class MyClass implements Iterable{
@Override
public MyBetterIterator iterator() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
该功能称为"返回类型协方差",在Java 5中引入.
| 归档时间: |
|
| 查看次数: |
3884 次 |
| 最近记录: |