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

标签 debugging groovy intellij-idea gradle scope

我有以下类(class):

class MyTask extends DefaultTask {
    private String param;

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

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

它工作正常,但是如果我在 if 上设置断点在 IntelliJ IDEA 中我无法访问 param 的值:
  • 变量 View 显示 this如果我展开它,我会看到 param .
  • 如果我执行 Run > Evaluate Expression... 并输入 this我可以看到同样的事情。
  • 但是如果我输入 this.param在表达式窗口中:

  • Cannot get the value of write-only property 'param' on MyTask.



    如何解决 param成为私有(private)实例变量而不是“自动 Groovy 属性”? this 是否还有另一个魔法变量? ?

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

    尝试

    基于建议this.@param :

    No such field: param for class: MyTask_Decorated



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

    java.lang.IllegalAccessException: Class java_lang_reflect_Field$get can not access a member of class MyTask with modifiers "private"

    最佳答案

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

    关于debugging - 如何在 Groovy 中访问实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26574297/

    相关文章:

    c# - 错误处理超过10的重试计数

    groovy - 为什么这个顶级 Groovy 类不能是静态的?

    grails - Grails:服务与Groovy类

    intellij-idea - 是否可以在 Intellij IDEA 中将选择拆分为多光标?

    visual-studio-2010 - Visual Studio 编辑并继续不起作用

    c++ - 无法设置 4 字节硬件断点 Windbg

    debugging - 在 Postgresql 中,如何调试删除级联后发生的错误?

    eclipse - Groovy Eclipse 无法启动 junit 测试

    java - 创建一种方法来增加电子邮件中的数字

    java - 即时优化 Android Studio/IntelliJ 中所有项目的导入