我认为,即使内部类的成员被声明为私有,也可以从其封闭的类中进行访问。但是我遇到了以下代码结构的编译时错误。我的顶级类实现了Iterable接口。迭代器在内部类中实现。当通过iterator()方法获取内部类的实例时,我无法使用该实例访问数据字段。
public class RandomQueue<Item> implements Iteralbe<Item>
{
public RandomQueue() {}
public Iterator<Item> iterator() // iterator() method
{
return new ShuffleIterator();
}
// inner class implementing iterator
private class ShuffleIterator implements Iterator<Item>
{
private int i; // private data field in inner class.
.......
public boolean hasNext() {...}
public Item next() {...}
public void remove() {...}
}
public void doSomething()
{
// Compile time error. "i cannot be resolved or is not a field"
int j = iterator().i;
}
}
有什么建议?
因为方法的返回类型iterator()
为Iterator<Item>
,而i
类中没有任何变量Iterator<Item>
。
如果您的方法是:
public ShuffleIterator iterator() // iterator() method
{
return new ShuffleIterator();
}
这样,您将不会有该类中i
存在的任何编译错误ShuffleIterator
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句