如何引用外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()
您的代码将有效,
希望这对您有所帮助,
我一直在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()
您的代码将有效,
希望这对您有所帮助,