在Groovy中创建字符串列表


Groovy中的以下代码将GStrings添加到列表中:
List<String> args = [ 'cmd', "-Dopt=${value}" ]

当我用这个列表创建ProcessBuilder时,我会得到一个ClassCastException。将列表元素强制为正确类型的绝妙方法是什么?

或者,您可以执行:

List<String> args = [ 'cmd', "-Dopt=${value}"] as String[]

List<String> args = [ 'cmd', "-Dopt=${value}"]*.toString()

实际上,为什么出于兴趣而使用ProcessBuilder?Groovy添加了进行流程管理的方法,甚至在List中添加了三个execute方法

你可以做(这是在OS X或Linux上(:

def opt = '-a'
println( [ 'ls', "$opt" ].execute( null, new File( '/tmp' ) ).text )

它打印出我的/tmp文件夹中的文件

尝试

List<String> args = [ 'cmd', "-Dopt=${value}".toString() ]

因为后者是CCD_ 6。

我做了一个测试:

def value = "abc"
List<String> args = [ 'cmd', "-Dopt=${value}"];
System.out.println (args.getClass());
System.out.println (args.get(0).getClass());
System.out.println (args.get(1).getClass());

输出为:

class java.util.ArrayList
class java.lang.String
class org.codehaus.groovy.runtime.GStringImpl

将代码更改为:

def value = "abc"
List<String> args = [ 'cmd', "-Dopt=${value}".toString()];
System.out.println (args.getClass());
System.out.println (args.get(0).getClass());
System.out.println (args.get(1).getClass());

产生了这个:

class java.util.ArrayList
class java.lang.String
class java.lang.String

应该做到这一点,但我不能100%确定这是最好的方法。

相关内容

  • 没有找到相关文章

最新更新