这个关键字包含scala和匿名函数/类

时间:2011-03-28 15:42:18

标签: java scala

在Java中,我可以引用特定类的外部实例: 对不起,我是这个意思。

object obj extends SomeOtherClass {
def myMethodOfSomeInstance = {
val uiThread = new SomeClass {
          def run: Unit = {
            chooser.showOpenDialog(SomeOtherClass.this)            
          }
        }
}

... 这段代码没有编译,但是在这一行,我想引用父实例?我该怎么做?

chooser.showOpenDialog(SomeOtherClass.this)

1 个答案:

答案 0 :(得分:4)

您可以在封闭对象中使用自引用,您可以参考:

object SomeObject { outer =>
  def myMethodOfSomeInstance = {
    val uiThread = new SomeClass {
      def run: Unit = {
        chooser.showOpenDialog(outer)
      }
    }
  }
}

编辑:顺便说一下,对象的声明必须是object obj extends SomeOtherClass才能成为有效的scala代码。然后,您还可以使用obj.this引用封闭对象。