Aufzählungsfunktionen
1. Die Verwendung von enum zum Definieren einer Aufzählungsklasse erbt standardmäßig die Klasse java.lang.Enum anstelle der Klasse Object. Unter diesen implementiert die Klasse java.lang.Enum zwei Schnittstellen: java.lang.Serializable und java.lang.Comparable
2. Der Konstruktor der Aufzählungsklasse kann den privaten Zugriffsmodifikator nur verwenden, wenn er konstruiert ist wird weggelassen Der Zugriffskontrollcharakter des Geräts wird standardmäßig von privat geändert.
3 Alle Instanzen der Aufzählungsklasse müssen explizit in der Aufzählungsklasse aufgeführt sein, andernfalls kann diese Aufzählungsklasse niemals Instanzen generieren . Wenn diese Instanzen aufgelistet sind, fügt das System automatisch öffentliche statische endgültige Änderungen hinzu, ohne dass Programmierer sie explizit hinzufügen müssen.
public enum Week { MON{ public String toLocaleString(){ return "星期一"; } },TUES{ public String toLocaleString(){ return "星期二"; } },WEB{ public String toLocaleString(){ return "星期三"; } },THUR{ public String toLocaleString(){ return "星期四"; } },FRI{ public String toLocaleString(){ return "星期五"; } },SAT{ public String toLocaleString(){ return "星期六"; } },SUN{ public String toLocaleString(){ return "星期日"; } }; public abstract String toLocaleString(); }
Durchlauf von Aufzählungen
public class EnumTest { public static void main(String[] args){ for(Week w:Week.values()){ System.out.println(w); } } }
Gemeinsame Aufzählungsmethoden
int CompareTo-Methode
String name() gibt den Namen der Aufzählungsinstanz zurück
int ordinal() gibt den Index des Aufzählungswerts in der Aufzählung zurück
String toString() gibt den Instanznamen der größeren Aufzählung zurück als Name Häufig verwendet
public static valueOf()
public class EnumTest { public static void main(String[] args){ Week day =Week.FRI; System.out.println(day);//FRI System.out.println(day.name());//FRI System.out.println(day.ordinal());//4 System.out.println(Week.valueOf("SUN").toLocaleString());//星期日 System.out.println(Week.values().length);//7 获取枚举长度 } }
Konstruktor der Aufzählung
public enum Gender { MALE("男"),FEMALE("女"); private String name; private Gender(String name){ this.name =name; } public String getName(){ return this.name; } public String toString(){ String name = null; switch(this){ case MALE: name="男"; break; case FEMALE: name="女"; break; } return name; } }
Umfassendes Anwendungsbeispiel der Aufzählung: Ampel
public enum Lamp { /*每个枚举元素各表示一个方向的控制灯*/ S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false), /*下面元素表示与上面的元素的相反方向的灯,它们的“相反方向灯”和“下一个灯”应忽略不计!*/ N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false), /*由南向东和由西向北等右拐弯的灯不受红绿灯的控制,所以,可以假想它们总是绿灯*/ S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true); private Lamp(String opposite,String next,boolean lighted){ this.opposite = opposite; this.next = next; this.lighted = lighted; } /*当前灯是否为绿*/ private boolean lighted; /*与当前灯同时为绿的对应方向*/ private String opposite; /*当前灯变红时下一个变绿的灯*/ private String next; public boolean isLighted(){ return lighted; } /** * 某个灯变绿时,它对应方向的灯也要变绿 */ public void light(){ this.lighted = true; if(opposite != null){ Lamp.valueOf(opposite).light(); } System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!"); } /** * 某个灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿 * @return 下一个要变绿的灯 */ public Lamp blackOut(){ this.lighted = false; if(opposite != null){ Lamp.valueOf(opposite).blackOut(); } Lamp nextLamp= null; if(next != null){ nextLamp = Lamp.valueOf(next); System.out.println("绿灯从" + name() + "-------->切换为" + next); nextLamp.light(); } return nextLamp; } }
Das Obige ist die detaillierte Einführung in die Verwendung von Aufzählungen in Java. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!