Java列舉詳解及應用實例(涵蓋了一切典范用法)。本站提示廣大學習愛好者:(Java列舉詳解及應用實例(涵蓋了一切典范用法))文章只能為提供參考,不一定能成為您想要的結果。以下是Java列舉詳解及應用實例(涵蓋了一切典范用法)正文
在現實編程中,常常存在著如許的“數據集”,它們的數值在法式中是穩固的,並且“數據集”中的元素是無限的。
例如禮拜一到禮拜日七個數據元素構成了一周的“數據集”,春夏秋冬四個數據元素構成了四時的“數據集”。
在java中若何更好的應用這些“數據集”呢?是以列舉便派上了用處,以下代碼具體引見了列舉的用法。
package com.ljq.test;
/**
* 列舉用法詳解
*
* @author jiqinlin
*
*/
public class TestEnum {
/**
* 通俗列舉
*
* @author jiqinlin
*
*/
public enum ColorEnum {
red, green, yellow, blue;
}
/**
* 列舉像通俗的類一樣可以添加屬性和辦法,可認為它添加靜態和非靜態的屬性或辦法
*
* @author jiqinlin
*
*/
public enum SeasonEnum {
//注:列舉寫在最後面,不然編譯失足
spring, summer, autumn, winter;
private final static String position = "test";
public static SeasonEnum getSeason() {
if ("test".equals(position))
return spring;
else
return winter;
}
}
/**
* 性別
*
* 完成帶有結構器的列舉
*
* @author jiqinlin
*
*/
public enum Gender{
//經由過程括號賦值,並且必需帶有一個參結構器和一個屬性跟辦法,不然編譯失足
//賦值必需都賦值或都不賦值,不克不及一部門賦值一部門不賦值;假如不賦值則不克不及寫結構器,賦值編譯也失足
MAN("MAN"), WOMEN("WOMEN");
private final String value;
//結構器默許也只能是private, 從而包管結構函數只能在外部應用
Gender(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
/**
* 定單狀況
*
* 完成帶有籠統辦法的列舉
*
* @author jiqinlin
*
*/
public enum OrderState {
/** 已撤消 */
CANCEL {public String getName(){return "已撤消";}},
/** 待審核 */
WAITCONFIRM {public String getName(){return "待審核";}},
/** 期待付款 */
WAITPAYMENT {public String getName(){return "期待付款";}},
/** 正在配貨 */
ADMEASUREPRODUCT {public String getName(){return "正在配貨";}},
/** 期待發貨 */
WAITDELIVER {public String getName(){return "期待發貨";}},
/** 已發貨 */
DELIVERED {public String getName(){return "已發貨";}},
/** 已收貨 */
RECEIVED {public String getName(){return "已收貨";}};
public abstract String getName();
}
public static void main(String[] args) {
//列舉是一品種型,用於界說變量,以限制變量的賦值;賦值時經由過程“列舉名.值”獲得列舉中的值
ColorEnum colorEnum = ColorEnum.blue;
switch (colorEnum) {
case red:
System.out.println("color is red");
break;
case green:
System.out.println("color is green");
break;
case yellow:
System.out.println("color is yellow");
break;
case blue:
System.out.println("color is blue");
break;
}
//遍歷列舉
System.out.println("遍歷ColorEnum列舉中的值");
for(ColorEnum color : ColorEnum.values()){
System.out.println(color);
}
//獲得列舉的個數
System.out.println("ColorEnum列舉中的值有"+ColorEnum.values().length+"個");
//獲得列舉的索引地位,默許從0開端
System.out.println(ColorEnum.red.ordinal());//0
System.out.println(ColorEnum.green.ordinal());//1
System.out.println(ColorEnum.yellow.ordinal());//2
System.out.println(ColorEnum.blue.ordinal());//3
//列舉默許完成了java.lang.Comparable接口
System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1
//--------------------------
System.out.println("===========");
System.err.println("季候為" + SeasonEnum.getSeason());
//--------------
System.out.println("===========");
for(Gender gender : Gender.values()){
System.out.println(gender.value);
}
//--------------
System.out.println("===========");
for(OrderState order : OrderState.values()){
System.out.println(order.getName());
}
}
}