[英]Create object of anonymous class
我們有內心階級
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();
我不確定我是否正確理解你的問題。 但是如果你想使用匿名類,你可以這樣做:
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 )。 您還可以使用OuterClass.this
訪問類中的name
參數和外部類的this
實例。
你應該試試這個設計模式:
class OuterClass implements Iterable {
....
public Iterator iterator() {
return new Itr();
}
private class Itr implements Iterator {
....
}
}
Itr
實例可以在任何地方用作常見的Iterator
確保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;
}
};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.