groovy - 如何引用外部类this?

标签 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 版本)。

最佳答案

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

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/

相关文章:

java - 为什么我不能分配给这个通用变量?

grails - 在另一个 View gsp 中使用一个 View gsp

Groovy .each 闭包将元素包装在不需要的 Object[] 中

java - 在 Java 中嵌入 Groovy(绑定(bind))

api - 使用 JSR223 + JMeter 获取响应时间

android - Kotlin 内部类无法发起 Session 对象

java - 为非静态内部类实现有意义的 equals 方法

maven - 使用位于 src/test/java 中的 Maven 运行 Spock 测试

项目构造函数中的 Java Enum 私有(private)方法

java - 如何在java中的另一个类中使用嵌套类?