无法使用 add() 添加 jvmArgs,为什么?

Max*_*ind 6 gradle

谁能解释为什么第一个示例有效而第二个示例不起作用?

test {
    jvmArgs '-Xdebug',
            '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000'
}

test {
    jvmArgs.add('-Xdebug')
    jvmArgs.add('-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000')
}
Run Code Online (Sandbox Code Playgroud)

Opa*_*pal 5

因为在第二个示例中调用了该方法。您获取列表并对其进行修改,但更改不会反映到设置 -只读访问。在第一个示例中,调用方法并设置传递的参数。

这是解释,返回列表的副本(出于安全原因 - 可变类型应始终作为副本返回)

public List<String> getJvmArgs() {
   List<String> args = new ArrayList<String>();
   for (Object extraJvmArg : extraJvmArgs) {
      args.add(extraJvmArg.toString());
   }
   return args;
}
Run Code Online (Sandbox Code Playgroud)