我的目标是为一个类设置一个参数,但保留所有其他参数的默认值(也就是设置一个命名参数)。
对于此类:https://javadoc.jenkins-ci.org/jenkins/slaves/RemotingWorkDirSettings.html
您可以只使用默认值或传递参数来构造它。
两者都是有效的建构函式:
new RemotingWorkDirSettings()
new RemotingWorkDirSettings(boolean disabled, String workDirPath, String internalDir, boolean failIfWorkDirIsMissing)
我想将参数failIfWorkDirIsMissing
设置为true,但保留其他默认值。
此工作方式:new RemotingWorkDirSettings(false, 'a_string_here', 'b_string_here', true)
这不会:new RemotingWorkDirSettings(failIfWorkDirIsMissing: true)
引发异常:
groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: failIfWorkDirIsMissing
问题:
1.当我传递所有参数时,我可以设置它,它怎么会是“只读”的呢?因为它“可以”被设置,所以它在显式意义上不是真正的“只读”。
1.如何在不显式设置所有其他参数的情况下设置此参数?**
1条答案
按热度按时间vohkndzv1#
Java中不支持命名参数,您必须指定构造函数/方法所需的所有参数。
对于语法
new A(b:1, c:2)
,groovy将尝试使用参数Map
查找A
,然后尝试使用默认构造函数并设置相应的属性...看看class methods--没有
setFailIfWorkDirIsMissing
方法--这就是为什么它是只读的,并且可以使用带位置参数的构造函数来设置。