我有以下课程:
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类的成员
答案 0 :(得分:2)
这里没有涉及自动Groovy属性。我不知道在Groovy中访问超类中声明的私有变量的方法(Gradle将在运行时子类化MyTask
),听起来好像调试器的表达式评估具有相同的限制。