1package com.ljq.test; 2 3/** 4 * 枚举用法详解 5 * 6 * 7 */ 8public class TestEnum { 9 /** 10 * 普通枚举 11 * 12 */ 13 public enum ColorEnum { 14 red, green, yellow, blue; 15 } 16 17 /** 18 * 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法 19 * 20 */ 21 public enum SeasonEnum { 22 //注:枚举写在最前面,否则编译出错 23 spring, summer, autumn, winter; 24 25 private final static String position = "test"; 26 27 public static SeasonEnum getSeason() { 28 if ("test".equals(position)) 29 return spring; 30 else 31 return winter; 32 } 33 } 34 35 /** 36 * 性别 37 * 38 * 实现带有构造器的枚举 39 * 40 * 41 */ 42 public enum Gender{ 43 //通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错 44 //赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错 45 MAN("MAN"), WOMEN("WOMEN"); 46 47 private final String value; 48 49 //构造器默认也只能是private, 从而保证构造函数只能在内部使用 50 Gender(String value) { 51 this.value = value; 52 } 53 54 public String getValue() { 55 return value; 56 } 57 } 58 59 /** 60 * 订单状态 61 * 62 * 实现带有抽象方法的枚举 63 * 64 * 65 */ 66 public enum OrderState { 67 /** 已取消 */ 68 CANCEL {public String getName(){return "已取消";}}, 69 /** 待审核 */ 70 WAITCONFIRM {public String getName(){return "待审核";}}, 71 /** 等待付款 */ 72 WAITPAYMENT {public String getName(){return "等待付款";}}, 73 /** 正在配货 */ 74 ADMEASUREPRODUCT {public String getName(){return "正在配货";}}, 75 /** 等待发货 */ 76 WAITDELIVER {public String getName(){return "等待发货";}}, 77 /** 已发货 */ 78 DELIVERED {public String getName(){return "已发货";}}, 79 /** 已收货 */ 80 RECEIVED {public String getName(){return "已收货";}}; 81 82 public abstract String getName(); 83 } 84 85 public static void main(String[] args) { 86 //枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值 87 ColorEnum colorEnum = ColorEnum.blue; 88 switch (colorEnum) { 89 case red: 90 System.out.println("color is red"); 91 break; 92 case green: 93 System.out.println("color is green"); 94 break; 95 case yellow: 96 System.out.println("color is yellow"); 97 break; 98 case blue: 99 System.out.println("color is blue"); 100 break; 101 } 102 103 //遍历枚举 104 System.out.println("遍历ColorEnum枚举中的值"); 105 for(ColorEnum color : ColorEnum.values()){ 106 System.out.println(color); 107 } 108 109 //获取枚举的个数 110 System.out.println("ColorEnum枚举中的值有"+ColorEnum.values().length+"个"); 111 112 //获取枚举的索引位置,默认从0开始 113 System.out.println(ColorEnum.red.ordinal());//0 114 System.out.println(ColorEnum.green.ordinal());//1 115 System.out.println(ColorEnum.yellow.ordinal());//2 116 System.out.println(ColorEnum.blue.ordinal());//3 117 118 //枚举默认实现了java.lang.Comparable接口 119 System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1 120 121 //-------------------------- 122 System.out.println("==========="); 123 System.err.println("季节为" + SeasonEnum.getSeason()); 124 125 126 //-------------- 127 System.out.println("==========="); 128 for(Gender gender : Gender.values()){ 129 System.out.println(gender.value); 130 } 131 132 //-------------- 133 System.out.println("==========="); 134 for(OrderState order : OrderState.values()){ 135 System.out.println(order.getName()); 136 } 137 } 138 139}
Java枚举使用详解
Wesley13
2021-10-11
1307 0 0
点赞
收藏
评论区
加载中...