我有以下情况-一个包含内部抽象类的类:
class A {
private int Afield;
public void Amethod() { ... }
protected abstract class InnerOfA {
...
protected abstract void doSomething();
}
}
现在,在另一个类的方法中,我想创建一个扩展
InnerOfA
的匿名类:class B {
public void Bmethod(A instanceOfA)
{
A.InnerOfA instance = instanceOfA.new InnerOfA()
{
@Override
protected void doSomething()
{
// Here I want to use the private fields and methods of A.
}
}
}
}
但是由于某种原因(我不理解),我无法在
Afield
的替代中使用Amethod
和doSomething
。为什么会这样呢?匿名实例仍应在内部属于instanceOfA
,因此应能够访问其内部。 最佳答案
只能在声明了它们的类中访问私有字段/方法(子类不足以访问private
)。