Java 创建扩展内部抽象类的匿名类

Java 创建扩展内部抽象类的匿名类,java,class,inner-classes,Java,Class,Inner Classes,我有以下场景-一个包含内部抽象类的类: class A { private int Afield; public void Amethod() { ... } protected abstract class InnerOfA { ... protected abstract void doSomething(); } } 现在,在另一个类的方法中,我想创建一个匿名类,扩展InnerOfA: class B { public voi

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

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.
           }
       }
   }
}

但是由于某种原因(我不明白),我不能在
doSomething
的覆盖范围内使用
Afield
Amethod
。为什么会这样?匿名实例在内部应仍然属于
instanceOfA
,因此应能够访问其内部。

私有字段/方法只能在其声明的类内访问(子类化不足以访问
Private

public void Bmethod(final A instanceOfA)
你可以打电话

@Override
protected void doSomething()
{
    instanceOfA.Amethod();
}
但是您不能访问
远场
,因为如果您定义,它是私有的

public void Bmethod(final A instanceOfA)
你可以打电话

@Override
protected void doSomething()
{
    instanceOfA.Amethod();
}

但是您无法访问
Afield
,因为它是私有的

请重新阅读
private
的定义
B
(及其匿名内部类)不应能够访问
private
成员。请重新阅读
private
的定义
B
(及其匿名内部类)不应能够访问
private
成员。