如何在groovy中生成枚举键/名称列表

时间:2015-10-22 16:58:24

标签: groovy enums

我在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)
}

2 个答案:

答案 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