首页 > 学院 > 开发设计 > 正文

枚举

2019-11-08 19:36:21
字体:
来源:转载
供稿:网友

关键字:enum。枚举就是要让某个类型的变量的取值只能为若干固定值之中的一个。它是一个特殊的类,其中的每一个元素都是该类的一个对象。注意 : 因为不能New 枚举的实

力,所以枚举不能继承其他类,也不能被其他类继承。

为什么要有枚举?

问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。枚举就是要让某个

类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这

一目标。

用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。

1、私有的构造方法;

2、每个元素分别用一个公有的静态成员变量表示。 可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。

enum TrafficLamp{	/**	 * 对于这道题目而言,使用的其实是匿名对象内部类!	 * 枚举最简单的创建对象方法:RED,YELLOW,GREEN	 * 对于普通的类而言,创建对象:Person p = new Person();	 * 	 */	RED(30){		@Override		public TrafficLamp nextLamp() {			return YELLOW;		}			},		YELLOW(40){		@Override		public TrafficLamp nextLamp() {			return GREEN;		}			},		GREEN(45){		@Override		public TrafficLamp nextLamp() {			return RED;		}			};	public abstract TrafficLamp nextLamp();	PRivate int time;	private TrafficLamp(int time){		this.time = time;	}	public int getTime() {		return time;	}	public void setTime(int time) {		this.time = time;	}	}
public class EnumDemo {	public static void main(String[] args) {		System.out.println(TrafficLamp.RED.nextLamp());		System.out.println(TrafficLamp.RED.nextLamp().getTime());			}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表