Groovy 如何引用这个外部类?
我一直在搜索如何替换这样的呼叫Groovy 如何引用这个外部类?,groovy,inner-classes,Groovy,Inner Classes,我一直在搜索如何替换这样的呼叫 MyOuterClass.this 在嵌套类MyInnerClass中,但他们似乎没有讨论这个困难。我也没有通过谷歌搜索找到 那么,假设我有以下代码: class MyOuterClass { class MyInnerClass { } } 如何在MyInnerClass的方法内调用MyOuterClass的this指针 以下是一个尝试: public class Outer { def sayHello() {println "He
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()
而且你的代码会起作用
希望这有帮助,您能发布失败的代码,以及您得到的异常吗?因为它是在大型android活动类中(从Java代码翻译成Groovy),所以我尝试获得一个更简单的示例。然后我将编辑我的问题。我添加了一个片段来说明我的困难和它的轨迹。