gpt4 book ai didi

java - 将字符串转换为 Enum 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:50 24 4
gpt4 key购买 nike

免责声明:我不会说我是最有经验的 Java 人。可能有更简单的方法来完成示例中的操作。但这是一个关于将字符串条目转换为枚举类而不是枚举变量的问题。我已尽力解释。

这是我想做的事情的简单版本。我将有两个不同的枚举,我想根据用户的需求选择一个或另一个。在代码中,这方面的例子是

public enum Letters {
A, B, C, D, E, ... , X, Y, Z
}

public enum Numbers {
ONE, TWO, THREE, ..., EIGHT, NINE, TEN
}

public static void main(String [] args) {

System.out.println("Enter in you choice, letters (Letters) or numbers(Numbers)");
String entry = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
try {
entry = reader.readLine();
}
catch(Exception e){};
...
}

我想让用户这样做,如果他输入“Letters”,它将能够获取字符串条目并将其转换为对 Letters 枚举的变量引用。省略号是代码的占位符。我想最终使用它,这样我就可以使用

for (answer n : variable.values()) {
System.out.println(n);
}

代替

if (answer.equals("Numbers")) {
Numbers n;
for (n : Numbers.values()) {
System.out.println(n);
}
} else {
Letters l;
for (l : Letters.values()) {
System.out.println(l);
}
}

我试过

Class<?> c = Class.forName("Letters");

但它不起作用。

在我的真实示例中,我有 3 个 .java 文件,其中包含单独的类,每个文件中都有一个枚举。有三明治、啤酒和薯条类,它们的枚举是三明治、啤酒和薯条。这些类实现了 VendingMachineItem 接口(interface)。最后,该接口(interface)是 vendingMachine 包的一部分。我不知道这些是否重要,但这就是我能提供的所有信息。

最佳答案

以下工作(在 Eclipse 下使用 Java6 测试):

package com.bob;
public class Test
{
public enum Letters {
A, B, C, D, E
}

public enum Numbers {
ONE, TWO, THREE, FOUR, FIVE
}

public static void main(String [] args) throws Exception
{

System.out.println("Enter in you choice, letters (Letters) or numbers(Numbers)");
String entry = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
entry = reader.readLine();

Class<Enum<?>> clazz = (Class<Enum<?>>)Class.forName("com.bob.Test$" + entry);

for (Enum<?> x : clazz.getEnumConstants())
{
System.out.println(x);
}

}
}

请注意,由于是内部类,枚举的完全限定类名是 com.bob.Test$Letterscom.bob.Test$Numbers。错误处理留作练习。

关于java - 将字符串转换为 Enum 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8174168/

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