从控制台获取枚举类型的输入

时间:2014-07-28 09:43:37

标签: java enums

如何从控制台获取java中enum类型的输入?

我有这堂课:

class enumTest {

  public enum Color {
    RED, BLACK, BLUE
  }

  BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  Color color = input.readLine();

  public static void main (String[]args) {

  switch (color) {
    ...

在这一行Color color = input.readLine();我收到一条错误消息:

incompatible types: String cannot be converted to Color

我如何得到这个?

2 个答案:

答案 0 :(得分:4)

每个枚举都有一个automatically generated静态valueOf方法来解析字符串。所以你可以使用:

String colorName = input.readLine();
Color color = Color.valueOf(colorName);

但是,如果给定名称没有任何相应的枚举值,则会抛出异常。您可能希望创建Map<String, Color>(在Color内或单独创建),以便您可以更优雅地处理此问题。

答案 1 :(得分:1)

将读取行存储在String变量中,然后使用Enum类的valueOf方法将字符串转换为枚举实例。

color = Color.valueOf( input.readLine() );