如何在Groovy中访问实例变量?

时间:2014-10-26 14:54:08

标签: debugging groovy intellij-idea gradle scope

我有以下课程:

class MyTask extends DefaultTask {
    private String param;

    void setParam(String param) {
        this.param = param;
    }

    @TaskAction
    void action() {
        if (param == "test") {
            println "OK"
        }
    }
}

它运行正常但是如果我在IntelliJ IDEA的if上设置断点,我无法访问param的值:

  • 变量视图显示this,如果我展开它,我会看到param
  • 如果我运行>评估表达式...... 并输入this我可以看到同样的事情。
  • 但如果我在表达式窗口中输入this.param
  

无法获得只写属性的价值' param'在MyTask上。

我如何解决param解析为私有实例变量而不是"自动化Groovy属性"? this还有另一个神奇的变量吗?

修改代码并添加getParam()不是一个选项!

尝试

基于建议this.@param

  

没有这样的字段:类的参数:MyTask_Decorated

我也试过this.class.superclass.getDeclaredField("param").get(this)

  

java.lang.IllegalAccessException:类java_lang_reflect_Field $ get无法使用修饰符" private"

访问MyTask类的成员

1 个答案:

答案 0 :(得分:2)

这里没有涉及自动Groovy属性。我不知道在Groovy中访问超类中声明的私有变量的方法(Gradle将在运行时子类化MyTask),听起来好像调试器的表达式评估具有相同的限制。