如何引用外class这个?

How to refer to the outer class this?

我一直在official Groovy documentation搜索如何替换像

这样的调用
MyOuterClass.this

在一个嵌套的class MyInnerClass 里面,但是他们似乎并没有谈论这个困难。而且我谷歌也没有找到。

那么,假设我有这段代码:

class MyOuterClass {
    class MyInnerClass {
    }
}

如何在 MyInnerClass 的方法中调用 MyOuterClass 的 this 指针?

这是一次尝试:

public class Outer {
    def sayHello() {println "Hello !"}
    public class Inner {
        def tellHello(){
            Outer.this.sayHello()
        }
    }
}

def objOuter = new Outer()
def objInner = new Outer.Inner()
objInner.tellHello()

这里是错误堆栈跟踪:

java.lang.NullPointerException: Cannot invoke method sayHello() on null object
    at Outer$Inner.tellHello(inner_outer.groovy:5)
    at Outer$Inner$tellHello.call(Unknown Source)
    at inner_outer.run(inner_outer.groovy:12)

(我使用的是Groovy 2.4.5版本)。

唯一的问题是您没有将外部对象传递给新的内部 class 语句,请使用:

def objOuter = new Outer()
def objInner = new Outer.Inner(objOuter)

而不是:

def objOuter = new Outer()
def objInner = new Outer.Inner()

您的代码将有效,

希望这对您有所帮助,