我有以下情况-一个包含内部抽象类的类:

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的替代中使用AmethoddoSomething。为什么会这样呢?匿名实例仍应在内部属于instanceOfA,因此应能够访问其内部。

最佳答案

只能在声明了它们的类中访问私有字段/方法(子类不足以访问private)。

10-06 13:20