In actual programming, there are often such "data sets" whose values are stable in the program, and the elements in the "data set" are limited.
For example, seven data elements from Monday to Sunday form a "data set" for one week, and four data elements for spring, summer, autumn and winter form a "data set" for four seasons.
How to better use these "data sets" in java? So enumerations come in handy, the following code details the usage of enumerations.
1. Color enumeration
package com.meiju; /** * Simple application, color */ public enum ColorEnum { blue, wite, red, green, yellow; private final static String cloe = "blue"; public static ColorEnum getSeason() { if ("blue".equals(cloe)) return blue; else return wite; } }
package com.test; import com.meiju.ColorEnum; public class ColorEnumTest { public static void main(String[] args) { System.out.println("颜色:" + ColorEnum.wite); System.out.println("Color: " + ColorEnum.red); } }
Output result:
Color: wite
Color: red
2. Gender enumeration
package com.meiju; /** * Gender, implements an enumeration with a constructor */ public enum GenderEnum { //Assignment through parentheses, and must have a parameter constructor and a property and method, otherwise the compilation will fail //Assignment must be assigned or not assigned, part of the assignment cannot be assigned and part of the assignment cannot be assigned; if the assignment is not assigned, the constructor cannot be written, and the assignment compilation is also wrong MAN("MAN"), WOMEN("WOMEN"); public final String value; //The constructor can only be private by default, thus ensuring that the constructor can only be used internally GenderEnum(String value) { this.value = value; } public String getValue() { return value; } }
package com.test; import com.meiju.GenderEnum; public class GenderEnumTest { public static void main(String[] args) { System.out.println("Gender: " + GenderEnum.MAN); System.out.println("性别:" + GenderEnum.MAN.getValue()); } }
Output result:
Gender: MAN
Gender: MAN
3. Admin enumeration
package com.meiju; import java.util.ArrayList; import java.util.List; public enum NameEnum { //enumerate XMMCODE("XMMCODE", "Xiong Moumou"), LMMCODE("LMMCODE", "Li Moumou"), ZMMCODE("ZMMCODE", "Zhang Moumou"); //The class and value of the enumeration private String key; private String value; private NameEnum(String key, String value) { this.key = key; this.value = value; } public static NameEnum getEnum(String key) { for (NameEnum type: NameEnum.values ()) { if (type.key.equals(key)) { return type; } } return null; } public static List<NameEnum> getEnumList() { List<NameEnum> enumList = new ArrayList<NameEnum>(); for (NameEnum e: NameEnum.values ()) { enumList.add(e); } return enumList; } public String getKey() { return key; } public String getValue() { return value; } }
package com.test; import com.meiju.NameEnum; public class NameEnumTest { public static void main(String[] args) { System.out.println("Admin key: " + NameEnum.XMMCODE); System.out.println("Admin key: " + NameEnum.XMMCODE.getKey()); System.out.println("Administrator name: " + NameEnum.XMMCODE.getValue()); } }
Output result:
Admin key: XMMCODE
Admin key: XMMCODE
Administrator name: Xiong Moumou
4. Order status enumeration
package com.meiju; /** * Order status, implements enum with abstract methods */ public enum OrderStateEnum { //Cancelled CANCEL {public String getName() {return "Canceled";}}, //to be reviewed WAITCONFIRM {public String getName() {return "to be reviewed";}}, //waiting for payment WAITPAYMENT {public String getName() {return "Waiting for payment";}}, // is dispatching ADMEASUREPRODUCT {public String getName() {return "Distributing";}}, //Wait for delivery WAITDELIVER {public String getName() {return "Waiting to ship";}}, //Shipped DELIVERED {public String getName() {return "Delivered";}}, //received RECEIVED {public String getName() {return "Received";}}; public abstract String getName(); }
package com.test; import com.meiju.OrderStateEnum; public class OrderStateEnumTest { public static void main(String[] args) { System.out.println("订单状态:" + OrderStateEnum.CANCEL); System.out.println("订单状态:" + OrderStateEnum.CANCEL.getName()); } }
输出结果:
订单状态:CANCEL
订单状态:已取消
5、索引枚举
package com.meiju; /** * 索引 */ public enum SerialEnum { //位数,中文解说,code,开始值 SERIAL_NUMBER(12, "流水号", "SERIAL_NUMBER", 100000000000L), TEST_ID(12, "测试序列", "TEST_ID", 100000000000L), TEST_INDEX(10, "测试索引", "TEST_INDEX", 1L); private Integer serialEnumLength; private String SerialEnumName; private String SerialEnumCode; private Long startEnumSn; SerialEnum(Integer serialEnumLength, String SerialEnumName, String SerialEnumCode, Long startEnumSn) { this.SerialEnumCode = SerialEnumCode; this.serialEnumLength = serialEnumLength; this.SerialEnumName = SerialEnumName; this.startEnumSn = startEnumSn; } public Integer getSerialEnumLength() { return serialEnumLength; } public void setSerialEnumLength(Integer serialEnumLength) { this.serialEnumLength = serialEnumLength; } public String getSerialEnumName() { return SerialEnumName; } public void setSerialEnumName(String serialEnumName) { SerialEnumName = serialEnumName; } public String getSerialEnumCode() { return SerialEnumCode; } public void setSerialEnumCode(String serialEnumCode) { SerialEnumCode = serialEnumCode; } public Long getStartEnumSn() { return startEnumSn; } public void setStartEnumSn(Long startEnumSn) { this.startEnumSn = startEnumSn; } }
package com.test; import com.meiju.SerialEnum; public class SerialEnumTest { public static void main(String[] args) { System.out.println("索引code:" + SerialEnum.SERIAL_NUMBER.getSerialEnumCode()); System.out.println("索引中文解释:" + SerialEnum.SERIAL_NUMBER.getSerialEnumName()); System.out.println("索引开始值:" + SerialEnum.SERIAL_NUMBER.getStartEnumSn()); System.out.println("索引长度:" + SerialEnum.SERIAL_NUMBER.getSerialEnumLength()); } }
输出结果:
索引code:SERIAL_NUMBER
索引中文解释:流水号
索引开始值:100000000000
索引长度:12
99、总结
package com.test; import com.meiju.ColorEnum; import com.meiju.GenderEnum; import com.meiju.OrderStateEnum; public class Enumtest { 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; default : 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.err.println("颜色为" + ColorEnum.getSeason()); System.out.println("==========="); for(GenderEnum gender : GenderEnum.values()){ System.out.println(gender.value); } System.out.println("==========="); for(OrderStateEnum order : OrderStateEnum.values()){ System.out.println(order.getName()); } } }