3

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

例子:

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; !?

}    
4

2 回答 2

2

方法的重点valueOf是为您提供一种获取Fruits以 s 形式呈现给程序的值的方法String- 例如,当值来自配置文件或用户输入时:

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

上面,水果的名称由最终用户提供。您的程序可以将其作为 读取和处理enum,而无需知道在运行时将提供哪种水果。

于 2016-06-14T10:35:41.900 回答
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
于 2016-06-14T10:45:01.633 回答