如何引用外部类?

时间:2015-10-23 10:08:16

标签: groovy inner-classes

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

之类的电话
MyOuterClass.this

在嵌套类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版本)。

1 个答案:

答案 0 :(得分:2)

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

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

而不是:

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

您的代码将有效,

希望这有帮助,