Die meisten Programmierer werden numerische Werte zu jedem Punkt in einer Liste zuordnen , wie die Tage der Woche , um schneller und Codierung , um Tippfehler zu vermeiden. Einige Programmiersprachen bieten eine Enumeratortyp oder enum , die Sie zu einem festen Satz von Konstanten in einer besonderen Art zu definieren. Mit einem enum -Konstrukt hat mehrere Vorteile , wie verbesserte Art Matching, die Fähigkeit, benutzerdefinierte Methoden definieren , den Zugang zu automatischen Mitglieder vom Compiler bereitgestellt , und insgesamt erhöhte Lesbarkeit und Wartung des Programms. Bringen Sie benutzerdefinierte Methoden
Wenn Sie den Enum-Typ verwenden, definieren Sie eine neue Klasse . Genau wie bei jeder anderen Klasse , können Sie benutzerdefinierte Methoden und Felder in der Klasse. Dies ermöglicht Ihnen, gekapselte Funktionalität im Zusammenhang mit der Enum-Typ liefern . Beispielsweise definiert die folgende eine Klasse von Enum-Typ mit der durchschnittlichen Breite und Länge für US-Bundesstaaten. Es enthält eine benutzerdefinierte Methode , Distanz, die den Abstand zwischen einem Breiten-und Längengrad als Parameter an die Methode übergeben berechnet
import static java.lang.Math * ; . . Public enum Status { AK ( 61,3850 , -152,2683 ) , AL ( 32,7990 , -86,8073 ) , ... WV ( 38,4680 , -80,9696 ) , WY ( 42,7475 , -107,2085 );
privaten letzten Doppel Breite; privaten letzten Doppel Länge; Staat ( doppelte Breite , Doppel Längengrad) { this.latitude = Breite; this.longitude = Länge; } private double Breite ( ) {return Breite ;} private double Länge ( ) {return Länge; } private static letzten Doppel R = 6371 ;
< p > double Abstand (double lat -, Doppel- lng ) {//sphärische Gesetz cosinesreturn cos ( sin ( Breitengrad) * sin ( lat) + cos ( Breitengrad) * cos ( lat) + cos ( LNG - Längengrad) ) * R ;} }
Enhanced Typ passende
Da die Enum-Typ ist eine Klasse , erzwingt es Art passend zum Abgleich mit dem Satz von Konstanten in der enum definiert sind . Dies verhindert Fehler , indem sichergestellt wird , dass Parameter an Funktionen enthält immer einen Wert in der Enum-Typ -Klasse.
Public enum { Saison FRÜHLING, SOMMER , WINTER : Zum Beispiel, wenn eine Funktion erfordert eine Saison als Parameter , die tatsächliche Parameter an die Funktion übergeben wird zur Laufzeit gegen die vier zulässigen Werte der enum definiert abgestimmt werden , FALL }; public function Wetter ( enum Saison ) {...} ;
Verbesserte Dokumentation
enum Konstrukt macht Code leichter zu verstehen und zu pflegen . Durch Ihre enum Konstrukt der Mitglieder mit aussagekräftigen Namen , dokumentieren Sie Code , wie Sie es schaffen . Zum Beispiel erklärte ein Enum namens "Option" macht es leicht, die Fälle in der "switch "-Anweisung zu verstehen :
enum Option { SAVE DISCARD , CANCEL }; Option Pick ; ... Schalter ( Pick ) {case SAVE: break; Fall DISCARD : break; Fall ABBRECHEN : break ;}
Automatic spezielle Methoden
Java, fügt der Compiler automatisch spezielle Methoden in die Klasse , um es einfach zu Standard- Operationen durchzuführen. Zum Beispiel fügt der Compiler automatisch eine Methode namens "Werte" , die eine Reihe von enum konstante Werte liefert in der Reihenfolge, wie sie deklariert wurden. Dies macht Iteration über die ENUM-Werte sehr einfach , wie im folgenden Beispiel:
für (Monat m: Month.values ()) { System.out.printf ( "% s hat % d days" , m, m.numberOfDays ()); }