};
} public static
3.7、枚举(理解) 3.7.1、枚举的概念
枚举是在JDK 1.5之后增加的一个主要新特性,但是这个增加的特性来讲对于90%的人员来讲都是无用的,因为只有多例设计:一个类只能产生有限多个实例化对象,那么枚举的功能实际上就属于这种功能的实现,JDK 1.5之后增加对于那些已经习惯于使用枚举的C开发人员来讲,这些才算是有用的东西。 了新的关键字:enum。 范例:定义一个枚举类 enum Color{ } public class EnumDemo01 { }; } public class EnumDemo01 { }; public static void main(String args[]){ } for(Color c:Color.values()){ } System.out.println(c) ; 现在只是取得了一个,也可以通过循环的方式输出全部。 enum Color{ RED,GREEN,BLUE ; public static void main(String args[]){ } Color c = Color.RED ; System.out.println(c) ; RED,GREEN,BLUE ; 第(21)页 共(31)页 E-Mail:mldnqa@163.com
北京MLDN软件实训中心 联系电话:010-51283346
3.7.2、enum关键字和Enum类
} public class EnumDemo02 { };
枚举通过enum关键字定义,定义的枚举就相当于一个类继承了Enum类。 public static void main(String args[]){ } for(Color c:Color.values()){ } System.out.println(c.ordinal() + \当使用一个enum声明了一个枚举的时候,实际上就相当于一个类继承了Enum类。 enum Color{ RED,GREEN,BLUE ; 3.7.3、定义属性及方法
使用enum定义了一个枚举之后也可以像普通类那样定义属性和方法,包括构造方法,但是一定要注意的是,所有的enum Color{ } public class EnumDemo03 { };
在一般的开发中完全可以通过类的设计来达到枚举的功能。 public static void main(String args[]){ } for(Color c:Color.values()){ } System.out.println(c.ordinal() + \RED(\红色\绿色\蓝色\private Color(String title){ } private String title ; public void setTitle(String title){ } public String getTitle(){ } return this.title ; this.title = title ; this.setTitle(title) ; 构造方法一定是private。
第(22)页 共(31)页 E-Mail:mldnqa@163.com
北京MLDN软件实训中心 联系电话:010-51283346
3.7.4、实现接口定义抽象方法
枚举本身也可以实现接口,但是需要注意的是,一旦一个枚举实现了接口之后,枚举中的每个对象都必须分别的实interface Info{ } enum Color implements Info{ } public class EnumDemo04 { }; 在枚举中还可以定义抽象方法,但是与实现接口一样的是,每一个枚举对象都要分别实现此方法。 enum Color implements Info{ RED(\红色\ public String getColorInfo(){
第(23)页 共(31)页
E-Mail:mldnqa@163.com
public static void main(String args[]){ } for(Color c:Color.values()){ } System.out.println(c.ordinal() + \RED(\红色\ } ; private Color(String title){ } private String title ; public void setTitle(String title){ } public String getTitle(){ } return this.title ; this.title = title ; this.setTitle(title) ; public String getColorInfo(){ } public String getColorInfo(){ } public String getColorInfo(){ } return this.getTitle() ; return this.getTitle() ; return this.getTitle() ; public String getColorInfo() ; 例化这些接口中提供的抽像方法。
},GREEN(\绿色\},BLUE(\蓝色\ } public class EnumDemo05 { }; } ; private Color(String title){ } private String title ; public void setTitle(String title){ } public String getTitle(){ } return this.title ; this.title = title ; this.setTitle(title) ; } public String getColorInfo(){ } public String getColorInfo(){ } return this.getTitle() ; return this.getTitle() ; return this.getTitle() ; 北京MLDN软件实训中心 联系电话:010-51283346 },GREEN(\绿色\},BLUE(\蓝色\public abstract String getColorInfo() ; public static void main(String args[]){ } for(Color c:Color.values()){ } System.out.println(c.ordinal() + \3.7.5、使用枚举
枚举的最大特点实际上是限制了一个类的取值范围,例如:在设置习惯年别的时候,只能是男或女,那么此时应用enum Sex{ MALE(\男\女\private String name ; private Sex(String name){ } public String toString(){ return this.name ;
第(24)页 共(31)页
E-Mail:mldnqa@163.com
this.name = name ; 枚举是最合适的地方。