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

Debugging 如何在Groovy中访问实例变量?,debugging,groovy,intellij-idea,gradle,scope,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" } } }

我有以下课程:

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
无法在MyTask上获取只写属性“param”的值

如何将
param
解析为私有实例变量而不是“automagic Groovy属性”?这个还有另一个神奇的变量吗?

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

尝试 基于此建议,@param:

没有此类字段:类的参数:MyTask_

我还尝试了
this.class.superclass.getDeclaredField(“param”).get(this)

java.lang.IllegalAccessException:类java_lang_reflect_字段$get无法访问修饰符为“private”的类MyTask的成员


这里不涉及automagic Groovy属性。我不知道Groovy中有什么方法可以访问在超类中声明的私有变量(Gradle将在运行时子类
MyTask
),听起来好像调试器的表达式求值也有相同的限制。

这。@param
应该work@cfrick见更新,其他想法?问题似乎是由
\u修饰的
东西引起的。在
变量
窗口中,绝对没有任何东西可以引导您找到实际值?有
这个
,我在树中看到它,但我想调用它的方法或将它传递给Evaluate expression中的其他方法是的,这和我得出的结论是一样的,所以它更像是一个想法Groovy bug,因为我记得在调试器中盗版private在Java中是有效的;所以调试器应该有一个播放的方式。我不认为它是一个bug,但可能需要一个特性请求。既然你得出了同样的结论,请接受我的回答。