2016-06-14 11 views
1

Ich lerne über Aufzählungen und ich verstehe nicht den Zweck dieser Methode dient.Was ist der Sinn der statischen valueOf() Methode? (Aufzählungen)

Beispiel:

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

Vielleicht haben Sie den String '" apple "' als Benutzereingabe erhalten und möchten versuchen, ihn in ein enum-Element aufzulösen? – JonK

+0

Ein Beispiel wäre eine serialisierte Textnachricht (z. B. JSON), bei der ein Wert die Repräsentation eines Aufzählungselements ist. Um ein aktuelles Enum-Element von diesem zu entserialisieren, wäre die Verwendung von "valueOf" sinnvoll. – Mena

Antwort

2

Der Punkt der valueOf Methode ist, dass Sie einen Weg zur Gewinnung Fruits Werte zu Ihrem Programm als String s vorgestellt bieten - zum Beispiel, wenn die Werte stammen aus einer Konfigurationsdatei oder eine Benutzereingabe :

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

Oben wird der Name der Frucht vom Endbenutzer zur Verfügung gestellt. Ihr Programm kann es als enum lesen und verarbeiten, ohne zu wissen, welches Obst zur Laufzeit geliefert wird.

1

Ich stimme @dasblinkenlight zu, Sie können die Methode Enum.valueOf() verwenden, wenn Sie eine Laufzeiteingabe haben.

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

Eine weitere Sache, ich will hier hinzufügen, wenn die Enumeration für diesen Eingang nicht vorhanden ist, dann ist es valueOf() -Methode wird eine Runtime Ausnahme werfen, anstatt null zurückzukehren. Die Ausnahme ist: