我怎样才能让这样的工作:如何使外部类从内部类继承?
class Outer {
int some_member;
abstract class InnerBase {
abstract void method();
}
}
class OuterExtendsInner extends Outer.InnerBase {
OuterExtendsInner(Outer o) { o.super(); }
void method() {
// How do I use some_member here?
// Writing Outer.this.some_member -> error about Outer not being an enclosing class
// Writing just some_member -> no-go, either
}
}
的解决方法是在InnerBase方法返回Outer.this和派生类调用,但有另一种方式?
我主要想从外部扩展InnerBase以获得更好的代码组织,但是我可以将所有派生类移动到Outer。
“更好的代码组织”很少涉及内部类,我无法想象它涉及到这样的事情。 – Anon 2011-04-16 11:57:30
这就是为什么我想扩展外部类之外的内部类。我正在实现一个解释器,并且每个“内部”类对一个类型(名称,整数等)进行建模。该类型的行为可能需要或可能不需要对创建它的解释器对象的引用。我通过将解释器引用传递给每个可能需要它的方法来解决这个问题。 – zvrba 2011-04-16 16:19:59