java 枚举学习笔记
——定义:枚举是在JDK1.5之后产生的另一重要特性,在枚举中可以限制一个类的对象产生范围。在JDK1.5之前java有两种方法定义新类型:类和接口,枚举的引进可以补充这两者的不足。
1、枚举类型可以将一组类似的值包含到一种类型中。
2、声明枚举类型的格式
1 [public] enum 枚举类型名称 2 { 3 枚举对象1,枚举对象2,枚举对象3,...,枚举对象n; 4 }
——枚举类的主要操作方法
int compareTo(E o) 对象比较
boolean equals(Object obj) 比较两个枚举对象
String name() 返回此枚举的名称
int ordinal() 返回枚举常量的序数
*下面定义一个枚举类
1 public class GetEnumContent 2 { 3 public enum Color 4 { 5 RED,GREEN,BLUE; 6 } 7 public static void main(String[] args) 8 { 9 Color c = Color.BLUE; 10 System.out.println(c); 11 } 12 }
3、Enum类中的name()和ordinal()方法取得名称和编号
1 public class GetEnumContent 2 { 3 public enum Color 4 { 5 RED,GREEN,BLUE; 6 } 7 public static void main(String[] args) 8 { 9 for(Color c : Color.values()) 10 { 11 System.out.println(c.name() + "——>" + c.name()); 12 } 13 } 14 }
3、使用enum关键字可以定义一个枚举,实际上这个关键字表示的是java.lang.Enum类型,使用enum声明的枚举类型就相当于定义一个类,而此类默认继承java.lang.Enum类。
4.向枚举添加新属性
每个枚举类都有制定好的若干对象,每一个枚举对象也可以包含多个属性,这些属性可以通过构造方法为其赋值。
1 public enum Color { 2 RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 3 // 成员变量 4 private String name; 5 private int index; 6 // 构造方法 7 private Color(String name, int index) { 8 this.name = name; 9 this.index = index; 10 } 11 // 普通方法 12 public static String getName(int index) { 13 for (Color c : Color.values()) { 14 if (c.getIndex() == index) { 15 return c.name; 16 } 17 } 18 return null; 19 } 20 // get set 方法 21 public String getName() { 22 return name; 23 } 24 public void setName(String name) { 25 this.name = name; 26 } 27 public int getIndex() { 28 return index; 29 } 30 public void setIndex(int index) { 31 this.index = index; 32 } 33 }
5、让枚举类实现接口
枚举类也可以实现接口,但因为接口中会存在抽象方法,所以枚举类中的每个对象必须分别实现此抽象方法。
1 interface Print //定义Print接口 2 { 3 public String getColor(); //定义抽象方法 4 } 5 enum Color implements Print //枚举类实现接口 6 { 7 RED 8 { 9 public String getColor() //枚举对象实现抽象方法 10 { 11 return "红色"; 12 } 13 }, 14 GREEN 15 { 16 public String getColor() 17 { 18 return "绿色"; 19 } 20 }, 21 BLUE 22 { 23 public String getColor() 24 { 25 return "蓝色"; 26 } 27 } 28 } 29 public class InterfaceEnumDemo 30 { 31 public static void main(String[] args) 32 { 33 for(Color c : Color.values()) //foreach输出 34 { 35 System.out.print(c.getColor() + " "); 36 } 37 } 38 }
6、在枚举类中定义抽象方法
7、比较器
在Enum类的定义中已经实现好了Comparable接口,所以枚举类的内容是可以进行排序的。排序的规则通过Comparable接口完成。
8、总结
——在程序中可以使用一个枚举类来指定对象的取值范围
——在java中使用enum关键字定义一个枚举类,每一个枚举类都是继承Enum类。
——所有的枚举类都可以直接使用Comparable进行排序,因为Enum类实现了Comparable接口。
浙公网安备 33010602011771号