用一个例子来说明:
在程序中规定交通灯的取值只能是RED,GREEN,YELLOW取其他值就会报错,并且还能根据当前颜色知道下个颜色.怎么实现??
一. 用普通类来实现
public abstract class TrafficLamp {
public TrafficLamp() {}
//取得下个灯
public abstract TrafficLamp nextLamp();
//内部类实现覆写
public final static TrafficLamp RED = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
};
public final static TrafficLamp GREEN = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return YEllOW;
}
};
public final static TrafficLamp YEllOW = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
@Override
public String toString() {
if(this == RED){
return "RED";
}else if(this == GREEN){
return "GREEN";
}else{
return "YEllOW";
}
}
}
测试:
public class EnumTest {
public static void main(String[] args) {
TrafficLamp red = TrafficLamp.RED;
System.out.println(red.toString());
System.out.println(red.nextLamp().toString());
}
结果:
RED
GREEN
二、用枚举实现
public class EnumTest {
public static void main(String[] args) {
TrafficLamp red = TrafficLamp.RED;
System.out.println(red.toString());
System.out.println(red.nextLamp().toString());
}
public enum TrafficLamp{
RED{
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN{
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW{
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
}
}
结果:
RED
GREEN
所以:
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
枚举还提供了很多使用的方法。可以查看帮助文档
分享到:
相关推荐
理解java枚举类型
NULL 博文链接:https://rensanning.iteye.com/blog/2013734
Java枚举类型.pdf
java枚举结果类、根据状态值获取枚举值 Controller: /** 模块类型枚举 */ model.addAttribute("mType", ModuleTypeEnum.ModuleTypeShow()); ftl: value="${mType.key}:${mType.value}” </#list>
简单总结java枚举类型,适合java初学者
java枚举类型的说说明,详细阐述了枚举类型的使用和注意事项
JAVA枚举类型的用法详解 例举了JAVA 枚举类型常见用法
一个关于JAVA枚举类型的MHT文件,包含JAVA枚举类型的用法,以及JDK版本的问题。
全面掌握java枚举类型(enum-type)1
JAVA枚举类型[归纳].pdf
Java源码查看枚举类型定义.rarJava程序设计经典300例
讲述了java中的枚举类型的用法,深入枚举类型
Java中的枚举类型Enum示例源代码,详见http://blog.csdn.net/snarlfuture/article/details/18996037
我想几乎每一个学习Java语言的人在学习枚举的时候首先的一个疑问就是“为什么不用static final字段替代?”,有这个疑问就说明你已经摸索到了枚举类型的最主要功能......
Java 枚举类型案例
主要介绍了Java中枚举类型的一种使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java枚举类型详细讲解,自己撰写的一本电子书,编写得很详细
java枚举类型的定义使用介绍,还有示例。
javaenum源代码