我怎樣才能讓這樣的工作:如何使外部類從內部類繼承?
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