我们有内在的课程
class OuterClass
{
public Iterator getIterator(final String name)
{
class LocalIterator implements Iterator
{
public Iterator next()
{
return new LocalIterator();
}
}
return new LocalIterator();
}
}
是否可以使用Local iterator的所有功能创建一个匿名类,并使getIterator返回该匿名类的对象?主要问题是 - 应该是什么而不是
return new LocalIterator();
答案 0 :(得分:3)
我不确定我是否理解你的问题。但是如果你想使用匿名类,你可以这样做:
class OuterClass {
public Iterator<Object> getIterator(final String name) {
return new Iterator<Object>() {
@Override
public boolean hasNext() {
// validate if there is a next object
return false;
}
@Override
public Object next() {
// get the next object and return it, throw an exception if there is no next object
return null;
}
};
}
}
通常,您始终可以使用匿名类创建任何接口的实例(请参阅,例如http://docstore.mik.ua/orelly/java-ent/jnut/ch03_12.htm)。您还可以使用name
访问类中的this
参数和外部类的OuterClass.this
实例。
答案 1 :(得分:2)
您应该尝试使用此设计模式:
class OuterClass implements Iterable {
....
public Iterator iterator() {
return new Itr();
}
private class Itr implements Iterator {
....
}
}
Itr
个实例可以作为常见的Iterator
答案 2 :(得分:0)
确保OuterClass
实现Iterable
以便与foreach循环一起使用。然后在iterator()
中,您可以返回一个匿名迭代器的实例(用您需要的具体类型替换T
)。
public class OuterClass<T> implements Iterable<T> {
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return false;
}
@Override
public T next() {
// TODO Auto-generated method stub
return null;
}
};
}
}