小さな例で問題を再現しようとしています。次のコード スニペットに示されている場所でコンパイル エラーが発生しています。
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
?