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

メソッドのポイントは、プログラムに s として提示される値valueOfを取得する方法を提供することです。たとえば、値が構成ファイルまたはユーザー入力から取得される場合:FruitsString

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

ここでもう 1 つ追加したいことがあります。この入力に対して列挙型が存在しない場合、valueOf() メソッドは null を返す代わりにランタイム例外をスローします。例外は次のとおりです。

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant
于 2016-06-14T10:45:01.633 に答える