我仍在与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();
}
}
StringValue
可以访问FirstName
,FirstName
可以访问Person
。但FirstName
如何访问StringValue
?
我在<identifier> expected
的实施中收到错误value()
?什么是正确的语法?
答案 0 :(得分: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
尽管每个Inner
对象与其外部实例相关,但Outer
实例对Inner
实例一无所知,除非您告诉它,即。保留对它们的引用。
答案 1 :(得分:1)
感谢Sotirios这是我提问的代码的更正版本。
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
{
Attribute firstname = new Attribute()
{
Value value = new Value()
{
Attribute attribute () { return firstname; }
};
Entity entity () { return Person.this; }
Value value () { return value; }
};
}
public static void main (String[] args)
{
Person p = new Person();
}
}