2016-06-14 64 views
1

我正在学习枚举,我不明白这个方法服务的目的。静态valueOf()方法的要点是什么? (枚举)

实施例:

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

}  
+3

也许你收到了字符串''苹果''作为用户输入,并想尝试将其解析为枚举元素? – JonK

+0

一个例子是序列化的文本消息(例如JSON),其中一个值是枚举元素的表示。为了反序列化一个实际的enum元素,使用'valueOf'会有意义。 – Mena

回答

2

valueOf方法的要点在于,提供你获得呈现给你的程序作为String小号Fruits值的方式 - 例如,当值来自配置文件或用户输入:

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

以上,水果的名称由最终用户提供。您的程序可以将其作为enum进行读取和处理,但不知道运行时将提供哪些水果。

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()方法将抛出而不是返回空运行时异常。例外将是:

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant 
相关问题