gpt4 book ai didi

java - Groovy 枚举 - 如何返回枚举映射?

转载 作者:行者123 更新时间:2023-12-01 07:47:55 24 4
gpt4 key购买 nike

我有一个常规枚举,其中包含一个将枚举值作为映射返回的方法,其中包含一些附加逻辑。

这是一个例子:

enum MyEnum {
CAT('feline', 'meow'),
DOG('canine', 'woof')

MyEnum(String animalType, String sound){
this.animalType = animalType
this.sound = sound
}

private final String animalType
private final String getAnimalType(){
animalType
}

private final String sound
private final String getSound(){
sound
}

def getMap(List animalsToReturn){
Map result = [:]

// do some stuff...
for (animal in animalsToReturn){
result.put(MyEnum.animal.animalType, MyEnum.animal.sound)
}

return result
}

}


myMap = MyEnum.getMap(['DOG'])

每当我调用 MyEnum.getMap 时,都会收到错误消息,指出方法签名不匹配。即使我让 getMap 在方法中具有空签名和硬编码值作为测试。有任何想法吗?我在这里做错了什么?

最佳答案

您需要使用静态方法。

static Map getMap(List animalsToReturn) {
Map result = [:]

// do some stuff...
for (animal in animalsToReturn){
MyEnum myEnum = MyEnum[animal]
result.put(myEnum.animalType, myEnum.sound)
}
result
}

上面应该可以工作,但是,有一种更简单的方法可以在 Groovy 中实现相同的结果。

static Map getMap(List animalsToReturn) {   
animalsToReturn
.collect { MyEnum.valueOf it }
.collectEntries { [ it.animalType, it.sound ] }
}

或者只是

animalsToReturn.collectEntries {
MyEnum myEnum = MyEnum[it]
[ myEnum.animalType, myEnum.sound ]
}

关于java - Groovy 枚举 - 如何返回枚举映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46699804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com