如何从Java中的封闭类访问内部类?

cev*_*ing 2 java

我仍在与Java的参考文献作斗争.我不确定我是否会理解它们.有谁能够帮我?

非静态内部类可以通过访问封闭类Outer.this.但外层如何进入内心this呢?

看这个例子:

class cycle
{
  abstract static class Entity
  {
    abstract static class Attribute
    {
      abstract static class Value
      {
        abstract Attribute attribute ();
      }

      abstract Entity entity ();
      abstract Value value ();
    }
  }

  static class Person extends Entity
  {
    class FirstName extends Attribute
    {
      class StringValue extends Value
      {
        Attribute attribute () { return FirstName.this; }
      }

      Entity entity () { return Person.this; }
      Value value () { return this.StringValue.this; }
    }
  }

  public static void main (String[] args)
  {
    Person p = new Person();
  }
}
Run Code Online (Sandbox Code Playgroud)

StringValue可以访问FirstNameFirstName可以访问Person.但怎么可以FirstName访问StringValue

<identifier> expected在执行中得到错误value()?什么是正确的语法?

Sot*_*lis 7

Inner类是Outer类的成员,但它不是字段,即.不仅最多只有一个.

你可以做

Outer outer = new Outer();
Outer.Inner inner1 = outer.new Inner();
Outer.Inner inner2 = outer.new Inner();
Outer.Inner inner3 = outer.new Inner();
... // ad nauseam
Run Code Online (Sandbox Code Playgroud)

尽管每个Inner对象都与其外部实例相关,但实例对Outer实例一无所知,Inner除非您告诉它,即.保留对它们的引用.