我在groovy中有以下枚举
public enum ImageTypes {
jpg ("image/jpeg"),
jpeg ("image/jpeg"),
jpe ("image/jpeg"),
jfif ("image/jpeg"),
bmp ("image/bmp"),
png ("image/png"),
gif ("image/gif"),
ief ("image/ief"),
tiff ("image/tiff"),
tif ("image/tiff"),
pcx ("image/pcx"),
pdf ("application/pdf"),
final String value
ImageTypes(String value) {
this.value = value
}
String getValue() {
return this.value
}
String toString(){
value
}
String getKey() {
name()
}
}
我想生成一个ArrayList< String>键或值
我目前正在做的是循环遍历所有项目并构建数组列表,但我认为必须有一个简单的方法来做到这一点......
def imageTypes = ImageTypes.values()
def fileExts = new ArrayList<String>()
def mimeTypes = new ArrayList<String>()
for (type in imageTypes) {
fileExts.add(type.key)
mimeTypes.add(type.value)
}
答案 0 :(得分:8)
键的数组列表
ImageTypes.values()*.name()
值列表
ImageTypes.values()*.value
这里有两点要指出。
1)我使用spread operator在集合中的每个条目上调用一个操作(虽然这种情况下它只是一个数组),这是{{{{使用了1}}和name()
个引用。
2)我用括号(作为方法)调用value
,因为(我相信)它是枚举的隐含属性,而我只是使用{{1}直接来自name()
对象的值。
答案 1 :(得分:1)
扩展@mnd的答案-
<img src="images/coffee.jpeg">
是最佳选择,但是如果您使用的是Jenkins,则无法按原样工作。要运行Spread Operator
,您需要在Spread Operator
中添加@NonCPS
。
访问Jenkins Pipeline DSL
键列表的另一种方法是直接使用其枚举功能。
enum