有没有办法在Groovy中使用匿名代码块?例如,我正在尝试将以下Java代码转换为Groovy:
{
int i = 0;
System.out.println(i);
}
int i = 10;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
我能想出的最接近的翻译如下:
boolean groovyIsLame = true
if (groovyIsLame) {
int i = 0
println i
}
int i = 10
println i
Run Code Online (Sandbox Code Playgroud)
我知道匿名代码块通常是一种反模式.但是拥有像"inputStream0"和"inputStream1"这样的名称的变量也是一个反模式,所以对于我正在研究的代码,匿名代码块会有所帮助.
public static <T> List<T> repeat(T contents, int length) {
List<T> list = new ArrayList<T>();
for (int i = 0; i < length; i++) {
list.add(contents);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
这是我们的专有公共库中的实用方法.它对于创建列表很有用.例如,我可能想要一个包含68个问号的列表来生成大型SQL查询.这使您可以在一行代码中执行此操作,而不是四行代码.
在java/apache-commons中是否有一个实用程序类已经这样做了?我浏览了ListUtils,CollectionUtils,Arrays,Collections,几乎我能想到的一切,但我无法在任何地方找到它.我不喜欢在我的代码中保留通用实用程序方法,如果可能的话,因为它们通常是apache库的冗余.