小さな例で問題を再現しようとしています。次のコード スニペットに示されている場所でコンパイル エラーが発生しています。
class Outer {
class Inner
}
object OuterUtil {
val obj = new Outer
object xyz extends obj.Inner
//do something with xyz
}
//-------------------
object OuterUtil2 {
var m_obj: Outer = null
def createOuter() = {
m_obj = new Outer
}
def anotherMethod() {
//Compilation error here: stable identifier required,
//but OuterUtil2.this.m_obj found.
object xyz extends m_obj.Inner
}
}
object Test {
OuterUtil2.createOuter
OuterUtil2.anotherMethod
}
OuterUtil正常に動作しています。ではOuterUtil2、機能を 2 つの機能に分割しています。Outerインスタンスm_objを member として保存していますvar。このcreateOuterメソッドは、Outerインスタンスを作成して に保存しますm_obj。でanotherMethod、コンパイル エラーが発生します。修正方法はOuterUtil2?