我发现它在 Ruby 中可用,但我从我在 Python 中所做的事情中认出了它;“splat”运算符。长话短说,我想知道是否有更简单的方法来完成我目前的工作,模仿“splat”操作员所做的事情。
我做了一个其他人可以调用的中心方法,因为我意识到我有几个非常相似的方法,除了一些小事情之外,它们都在做同样的事情。这是方法签名:
private String callScript(String scriptLocation, String... extraArgs) throws Exception {
我想要求至少一个参数(scriptLocation
),然后允许任意数量的额外参数。我最终要做的是创建一个ProcessBuilder
. 我的愿望是做这样的事情:
ProcessBuilder pb = new ProcessBuilder("something", scriptLocation, /* extraArgs */);
但当然,ProcessBuilder
构造函数只接受以下内容:
List<String>
String[]
String...
所以我的方法显然行不通。
据我所知,我目前的解决方法是:
List<String> finalArgs = new ArrayList<String>();
finalArgs.add("something");
finalArgs.add(scriptLocation);
finalArgs.addAll(Arrays.asList(extraArgs));
ProcessBuilder pb = new ProcessBuilder(finalArgs);
(是的,我知道我不必使用List
并且可以只制作一个String[]
)
(是的,我知道我可以循环extraArgs
并单独添加它们finalArgs
,而不必使用addAll
and Arrays.asList()
)
(是的,我知道我可以创建一个函数,通过返回某些参数和可变参数来有效地完成我的解决方法)
所以我想除了这最后三个陈述之外,还有什么可以实现的吗?