----------------- android培训、java培训、期待与您交流! -----------------
枚举
1,枚举存在的意义。
当要定义星期几或性别的变量,该怎么定义。假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday=0;
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时候就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这个目标。
2,用普通类模拟枚举的实现原理。
package enum_test;
//模拟枚举
public abstract class WeekDay {
private WeekDay() {
}
//把复杂的if else 语句抽象成两个匿名内部类。记住这个思想。
public final static WeekDay SUN = new WeekDay(){
@Override
public WeekDay nextDay() {
return MON;
}
};
public final static WeekDay MON = new WeekDay(){
@Override
public WeekDay nextDay() {
return SUN;
}
};
//用抽象方法定义nextDay就将大量的 if else 语句转移成了一个个独立的类。
public abstract WeekDay nextDay() ;
// if (this == SUN) {
// return MON;
// } else {
// return SUN;
// }
public String toString() {
return this == SUN ? "SUN" : "MON";
}
}
3,枚举的应用,构造方法和抽象方法。
package enum_test;
public class Enum {
public static void main(String[] args) {
WeekDay day = WeekDay.MON;
System.out.println(day.nextDay());
}
public enum Demo {
// 元素列表必须位于所有的成分之前。每个元素都是一个类。
SUN, MON, TUE, WED, THI, FRI, SAT;
// 对于枚举的构造方法只能是私有的。
// 元素列表中没有写任何参数时候,默认调用无参构造。
// 如果想调用带参构造,需要加入参数。例:SUN(1);
private Demo() {
}
private Demo(int day) {
}
}
public enum TrafficLamp{
// new子类的实例对象,调用父类的有参构造方法。
RED(30){
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
},
GREEN(40){
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
},
YELLOW(5){
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
// 定义一个抽象方法。方法的返回类型可以是类本身。
public abstract TrafficLamp nextLamp();
private int time ;
private TrafficLamp(int time){
this.time = time;
}
}
// 枚举只有一个成员时候,就可以作为一种单例的实现方式。
}
分享到:
相关推荐
Java——枚举: enum关键字、Enum类 类集对枚举的支持——EnumMap类与EnumSet类 枚举类实现接口、在枚举类中定义抽象方法 Java反射机制: Class类、Class类的使用 反射的应用:取得类的结构
五大基础算法——枚举,算法数据结构 五大常用算法
三年级——枚举法提高PPT学习教案.pptx
NULL 博文链接:https://newjueqi.iteye.com/blog/400855
一段短小的程序代码,可以很快地找出24点的所有可能情况。
数学广场——列表枚举.doc
文章目录前言:一、枚举什么是枚举?枚举的作用二、代码实现1. Enum类2. IntEnum类3. IntFlag类4. Flag类5. unique装饰器6. auto函数三、官方文档 前言: 首先大家要明白的是:枚举类不是Python的原生类!不是原生类!...
沪教版二年级下册《数学广场——列表枚举》数学教案.doc
from enum import Enum class Vip(Enum): GREEN=1 YELLOW=2 PURPLE=3 print(type(GREEN))#报错 print(type(Vip.GREEN))# print(type(Vip.GREEN.name))# ...print(Vip.GREEN.name)#GREEN(打印枚举的名字)(返回
4、 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。 5、 编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段...
第11章抽奖——随机数与枚举.ppt
第八章 自制容器——结构体和枚举第一节:结构体的使用第二节:typedef运算符第三节:结构体与数组第四节:结构体与函数第五节:枚举类型第六节:联合体第七节:结
第10章 结构体和共用体——枚举类型C语言程序设计第10章 结构体和共用体枚举标签枚举数据类型枚举(Enumeration)——一一列举应用场合当某些量仅由有限
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
易语言枚举窗口,转载他人的 源码易语言枚举窗口,转载他人的 源码易语言枚举窗口,转载他人的 源码易语言枚举窗口,转载他人的 源码易语言枚举窗口,转载他人的 源码易语言枚举窗口,转载他人的 源码易语言枚举窗口,转载...
从C++转到Java上的程序员一开始总是对Java有不少抱怨,其中没有枚举就是一个比较突出的问题。那么为什么 Java不支持枚举呢?从程序语言的角度讲,支持枚举意味着什么呢?能不能找到一种方法满足C++程序员对枚举的...
java学习笔记(11) 第11 章 - 枚举和注解(csdn)————程序
stm32_usb_hid_学习心得:基于STM32 的USB程序开发笔记、修改STM32的USB例程为自己所用、初涉USB,初学者USB入门总结——枚举。
NULL 博文链接:https://zisefeiniao.iteye.com/blog/382689