java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举
java中除了類和接口,還有一個類型叫做枚舉(enum),它出現得比較晚,在JDk1.5之后才出,因此對我們來說并不常用,但是它的作用還是不小。
創建的時候前面和創建類、接口一樣,在new之后,我們選擇enum即可。表面上枚舉和類,接口的區別是它是用enum修飾的,在圖標上是個黃色的E。
至于內部上的區別,我個人認為枚舉主要是將基本類型和值的限制進行了一個封裝。枚舉,根據字面的意思就是一一舉例,那么我覺得就是可以封裝進去一些已知所有結果的值。我們可以將它用作常量的封裝。
首先我們來定義一個枚舉,將周一到周日封裝進去:
public enum Week {
MON,TUE,WED,THU,FRI,SAT,SUN
}
如果我們要使用它的,直接調用即可,比如說我想調用星期一:
public class Test {
public static void main(String[] args) {
Week week = Week.MON;
System.out.println(week);
}
}
然后,我們還可以直接用在switch里面:
public static void main(String[] args) {
Week week = Week.MON;
switch (week) {
case MON:
break;
case TUE:
break;
case WED:
break;
case THU:
break;
case FRI:
break;
case SAT:
break;
case SUN:
break;
default:
break;
}
}
當然我們也可以用for each遍歷枚舉:
public static void main(String[] args) {
Week week = Week.MON;
for (Week w : week.values()) {
System.out.println(w);
}
}
講了這么多,有童鞋可能會問了,那我直接在外面寫七個String類型的變量就可以了,干嘛非要用什么枚舉,還這么麻煩?
我們的java代碼提倡?高內聚,低耦合的設計理念,通俗來講,就是一段代碼,能封裝就封裝,能復用就復用,盡量不要讓同樣的一段邏輯在程序中出現多次。比如這個星期,我們可能在這個類里面要用到,也可能要在別的類里面用到,那么我們只需要寫一個枚舉,這樣在別的類用的時候也是如此調用就好了。這樣做的好處是,如果哪一天,我們要改什么需求,只需要在枚舉里面改一下就好了,如果程序沒有符合這個理念,不僅改起來非常麻煩,還容易出錯。
接下來講講稍微高級點的玩法:
public enum Week {
MON("星期一"),TUE("星期二"),WED("星期三"),THU("星期四"),FRI("星期五"),SAT("星期六"),SUN("星期日");
private String week;
private Week(String week){
this.week = week;
}
public String getWeek() {
return week;
}
}
public class Test {
public static void main(String[] args) {
Week week = Week.MON;
for (Week w : week.values()) {
System.out.println(w.getWeek());
}
}
}
如果我們加入有參構造函數還有getter方法,加入一個值起名叫做week,便可以獲取這個值里面的實際內容,運行,再運行結果就是:
除了加一個,我們還可以加多個,比如給每個星期的值加上一個下標:
public enum Week {
MON("星期一",0),TUE("星期二",1),WED("星期三",2),THU("星期四",3),FRI("星期五",4),SAT("星期六",5),SUN("星期日",6);
private String week;
private int index;
private Week(String week, int index){
this.week = week;
this.index = index;
}
public String getWeek() {
return week;
}
public int getIndex(){
return index;
}
}
當然,我們也可以加入setter方法,這個函數可以用來修改枚舉里面的內容,比如我們用getter方法拿到index為0的參數,我們把再用setter方法講將此參數內的weeb值修改,這個有興趣的話可以自己試驗一下。 枚舉還有更多用法,比如可以繼承類還有實現接口,有興趣可以自己查查,在這不做重點。
總結
以上是生活随笔為你收集整理的java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java tm for chrome_j
- 下一篇: 文本文件写java_Java 读/写文件