我一直在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版本)。
答案 0 :(得分:2)
唯一的问题是你没有将外部对象传递给新的Inner类语句,请使用:
def objOuter = new Outer()
def objInner = new Outer.Inner(objOuter)
而不是:
def objOuter = new Outer()
def objInner = new Outer.Inner()
您的代码将有效,
希望这有帮助,