一.什麼是枚舉?
枚舉為一組相關的值定義了一個共同的類型,使你可以在你的代碼中以類型安全的方式來使用這些值。說白了就是一個構造方法私有化,将對象的屬性封裝在了枚舉的執行個體中,更加的安全和實用,以及簡單明了的一個方式。
二.枚舉的特點
1.枚舉用的是enum關鍵字進行的定義(文法:public enum 枚舉方法名{代碼塊})。
2.枚舉變量之間用逗号隔開,且枚舉變量用大寫,多個單詞之間用"_"(下滑線)隔開,比如:INT_SUM。
3.定義完變量之後,以分号結束,如果隻是有枚舉變量,而不是自定義變量,分号可以省略。
4.隻需要類名.變量名就可以召喚沒變量了,和靜态變量一樣,通過類名.屬性的方式。
枚舉的使用
1.枚舉常量的使用
/**
* 枚舉常量
*/
public enum FinalEnumStudy {
RED,
BLANK,
GREEN,
YELLOW
}
2.枚舉Switch的使用
//首先定義一個SwitchEnumStudy枚舉類
/**
* 枚舉Switch
*/
public enum SwitchEnumStudy {
GREEN,
RED,
BLANK
}
//然後定義一個SwitchEnumStudy2類使用Switch
public class SwitchEnumStudy2 {
SwitchEnumStudy color = SwitchEnumStudy.RED;
public void change () {
switch(color){
case RED:
color = SwitchEnumStudy.GREEN;
System.out.println(color);
break;
case GREEN:
color = SwitchEnumStudy.RED;
System.out.println(color);
break;
case BLANK:
color = SwitchEnumStudy.BLANK;
System.out.println(color);
break;
}
}
publci static void main(String[] args){
SwitchEnumStudy2 switchEnumStudy2 = new SwitchEnumStudy2();
swtichEnumStudy2.change();
}
}
3.枚舉類中添加新方法
/**
* 枚舉方法
*/
public enum EnumMethodStudy {
RED(1, "紅色"),
GREEN(2, "綠色"),
BLUE(3, "藍色"),
YELLOW(4, "綠色")
//注意聲明變量的順序
private int index;
private String name;
//構造方法
EnumMethodStudy(int index, String name) {
this.index = index;
this.name = name;
}
//靜态方法
public static String getName(int index){
EnumMethodStudy[] values = EnumMethodStudy.values();
for (EnumMethodStudy value : values) {
if (value.getIndex() == index) {
return value.neme;
}
}
return null;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Stirng name = EnumMethodStudy.getName(1);
System.out.println(name);
System.out.println(EnumMethodStudy.BLUE.getName());
EnumMethodStudy[] values = EnumMethodStudy.values();
for (EnumMethodStudy value : values) {
System.out.println(value.getName());
System.out.ptintln(value.name);
}
}
}
1.values()方法就是将枚舉類中所有的執行個體名稱周遊出來
2.name()方法就是将枚舉類中的所有的執行個體值周遊出來
4.覆寫枚舉的方法
public enum ToStringEnumMethod {
RED(1, "紅色"),
GREEN(2, "綠色"),
BLANK(3, "黑色");
private String name;
private int index;
ToStringEnumMethod(int i, String index) {
this.index = i;
this.name = index;
}
@Override
public String toString() {
return "ToStringEnumMethod{" +
"name='" + name + '\'' +
", index=" + index +
'}';
}
public static void main(String[] args) {
System.out.println(ToStringEnumMethod.RED.toString());
System.out.println(ToStringEnumMethod.GREEN.toString());
System.out.println(ToStringEnumMethod.BLANK.toString());
}
}
5.枚舉接口的使用
/**
* 枚舉接口
*/
public interface InterfaceEnumStudy {
public void println();
public String getInfo();
}
/**
* 實作類
*/
public enum InterfaceEnumStudy2 implements InterfaceEnumStudy {
RED("紅色", 1),
GREEN("綠色", 2),
BLANK("黑色", 3);
private String name;
private int index;
InterfaceEnumStudy2(String name, int index) {
this.name = name;
this.index = index;
}
public void println() {
System.out.println(this.name + " + " + this.index);
}
public String getInfo() {
return this.name;
}
public static void main(String[] args) {
System.out.println(InterfaceEnumStudy2.RED.getInfo());
InterfaceEnumStudy2.GREEN.println();
}
}
6.使用組織接口枚舉
/**
* 組織接口
*/
public interface ZhuZhiEnumStudy {
enum Coffee implements ZhuZhiEnumStudy{
BLANK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO
}
enum Dessert implements ZhuZhiEnumStudy{
FRUIT, CAKE, GELATO
}
//兩個枚舉類都進行實作ZhuZhiEnumStudy接口
}
public class ZhuZhiEnumStudy2 {
private static void testImplementsInterface() {
for (ZhuZhiEnumStudy.Coffee coffee : ZhuZhiEnumStudy.Coffee.values()) {
System.out.print(coffee + " ");
}
System.out.println();
ZhuZhiEnumStudy.Dessert[] values = ZhuZhiEnumStudy.Dessert.values();
for (ZhuZhiEnumStudy.Dessert dessertEnum : values) {
System.out.print(dessertEnum);
}
System.out.println();
}
public static void main(String[] args) {
testImplementsInterface();
ZhuZhiEnumStudy zhuZhiEnumStudy = ZhuZhiEnumStudy.Dessert.CAKE;
System.out.println(zhuZhiEnumStudy);
zhuZhiEnumStudy = ZhuZhiEnumStudy.Coffee.BLANK_COFFEE;
System.out.println(zhuZhiEnumStudy);
}
}
//枚舉周遊通過testImplementsInterface方法進行周遊,這種方式在我們定義枚舉類多且定義要求分明的時候會用到。