静态valueOf()方法有什么意义? (枚举)

时间:2016-06-14 10:27:28

标签: java enumeration value-of

我正在学习枚举,但我不明白这种方法的用途。

示例:

enum Fruits{
    apple, pear, orange
}

class Demo{
    f = Fruits.valueOf("apple");  //returns apple... but I had to type it!
                                 // so why wouldn't I save myself some time
                                 // and just write: f = Fruits.apple; !?

}    

2 个答案:

答案 0 :(得分:2)

valueOf方法的目的是为您提供一种获取Fruits作为String提交给您的程序的值的方法 - 例如,当值来自配置文件或用户输入:

String fruitName = input.next();
Fruits fruit = Fruits.valueOf(fruitName);

上面,水果的名称由最终用户提供。您的程序可以以enum的形式阅读和处理它,而不知道在运行时会提供哪种水果。

答案 1 :(得分:1)

我同意@dasblinkenlight,你可以使用Enum.valueOf()方法如果你有一些运行时输入。

String input="apple" //It may be passed from some where
Fruits fruit = Fruits.valueOf(input);  // Here you will get the object of type Fruits

我想在这里添加一件事,如果此输入不存在枚举,则valueOf()方法将抛出运行时异常,而不是返回null。例外情况是:

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant