gpt4 book ai didi

java - 使用枚举变量切换字符串

转载 作者:行者123 更新时间:2023-12-03 20:16:43 25 4
gpt4 key购买 nike

我有一个具有不同值的 Enum 并想切换一个字符串变量。现在我碰壁了,试图将枚举值转换为字符串,我可以将其用作大小写常量。

我最好的尝试是将 Enum 转换为 String 数组,但开关似乎不接受数组值作为大小写常量。 (IntelliJ 说:“需要常量表达式”)

Enum myEnum = {FOO, BAR}

String input = "foo"

final String[] constant = Arrays.stream(myEnum.values()).map(Enum::name).toArray(String[]::new);
//converts Enum to String[]; made it final, so it is "constant"

switch (input) {
case constant[0]:
System.out.println("foo");
break;
case constant[1]:
System.out.println("bar");
break;
}

有没有一种优雅的方法可以让这个切换依赖于枚举?

最佳答案

您不应该转换它,因为它不是必需的。此外,您的代码甚至无法编译,因为 case 是 Java 中的保留关键字。

你应该看看 EnumvalueOf 方法。

您的代码可能如下所示:

public enum MyEnum {FOO, BAR}

//method
String input = "foo";
MyEnum niceFound = MyEnum.valueOf(input.toUpperCase());

这将返回 FOO 但当给定值不作为类型存在时会抛出 IllegalArgumentException

关于java - 使用枚举变量切换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664982/

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