我一直在 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 版本)。
最佳答案
唯一的问题是您没有将外部对象传递给新的内部类语句,请使用:
def objOuter = new Outer()
def objInner = new Outer.Inner(objOuter)
而不是:
def objOuter = new Outer()
def objInner = new Outer.Inner()
你的代码将会工作,
希望这有帮助,
关于groovy - 如何引用外部类this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299813/