1.注意点
(1)枚举中的构造方法必须是private的。
(2)枚举中可以定义抽象方法和一般方法,但枚举对象必须实现所有抽象方法。
(3)枚举对象必须放在第一行。
1 package classTwo01; 2 3 public enum Colors { 4 5 RED{ 6 @Override 7 public void setName(String name) { 8 this.name=name; 9 } 10 11 },BLUE{ 12 @Override 13 public void setName(String name) { 14 this.name=name; 15 } 16 17 }; 18 19 public String name; 20 21 private Colors(){ 22 23 } 24 // private Colors(String name){ 25 // this.name=name; 26 // } 27 // 28 public String getName() { 29 return name; 30 } 31 32 public abstract void setName(String name); 33 }
1 package classTwo01; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 Colors.BLUE.setName("绿色"); 7 String color=Colors.BLUE.getName(); 8 System.out.println(color); 9 } 10 }
(3)枚举中values()方法是获取所有的枚举对象,使为一个数组,然后通过forEach循环输出。
1 package classTwo01; 2 3 public enum Colors { 4 5 RED(1,"红色"),BLUE(2,"蓝色"); 6 7 private int id; 8 private String name; 9 10 Colors(int id,String name){ 11 this.id=id; 12 this.name=name; 13 } 14 15 public int getId() { 16 return id; 17 } 18 public String getName() { 19 return name; 20 } 21 22 }
package classTwo01; import java.util.Iterator; public class Test { public static void main(String[] args) { Colors[] colors=Colors.values(); for (Colors color : colors) { System.out.println(color.getId()+":"+color.getName()); } } }
我们知道switch()括号中可以使byte short int char String enum 那么枚举该怎么用呢,看下面实例
1 public static void switchTest(Colors color) { 2 switch (color){ 3 case RED:{ 4 System.out.println("红色"); 5 break; 6 } 7 case BLUE:{ 8 System.out.println("蓝色"); 9 break; 10 } 11 default:{ 12 break; 13 } 14 } 15 }
枚举定义的模板: 1:枚举变量 (必须放在第一行的位置)(可多个)
2:成员变量(可多个)
3:静态或非静态方法(可多个)
4:构造方法(可多个)
5:普通方法(可多个)
6:抽象方法(可多个)