gpt4 book ai didi

java - 以通用方式处理多个枚举类型

转载 作者:行者123 更新时间:2023-11-30 03:08:54 24 4
gpt4 key购买 nike

我有几个枚举,我想将它们提供给像

这样的 Web-API
/get/enum-values?type=<enum-Name>

枚举如下:

public enum Color {RED, GREEN, BLUE};
public enum Status {OPEN, DONE, CLOSED};
public enum Type {CAR, BIKE, ON_FOOT};

我想编写的用于一般处理 Web-API 中所有这些枚举的代码如下:

Class<?>[] enumsArray = new Class<?>[] {
Color.class, Status.class, Type.class
};
List<String> getValuesForEnum(String enumName) {
List<String> returnValue = new ArrayList<>();
// Loop over the above array to find enum corresponding to the argument
for (Object e: foundEnum.values()) {
returnValue.add(e.toString());
}
return returnValue;
}

上面的函数无法编译,因为我无法一般地处理枚举。有什么办法可以做到这一点吗?

我不想独立处理每个枚举。

也许我可以从一些公共(public)枚举扩展所有枚举?

最佳答案

由于泛型数组存在问题(编译错误:“无法创建泛型数组”),最好使用Arrays.asList():

private static final List<Class<? extends Enum<?>>> ENUMS = Arrays.asList(
Color.class, Status.class, Type.class
);
private static List<String> getValuesForEnum(String enumName) {
for (Class<? extends Enum<?>> enumClass : ENUMS)
if (enumClass.getSimpleName().equals(enumName)) {
List<String> values = new ArrayList<>();
for (Enum<?> enumConstant : enumClass.getEnumConstants())
values.add(enumConstant.name()); // or enumConstant.toString()
return values;
}
throw new IllegalArgumentException("Unknown enum: " + enumName);
}

关于java - 以通用方式处理多个枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34081815/

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