java中enum用法及和swtich结合使用
来源:互联网 发布:河南大学软件学院图片 编辑:程序博客网 时间:2024/06/06 11:36
enum用法
语法(定义)
创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类),此类不能手工进行子类定义。枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。简单用法
Enum一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用”==”来替换equals。是一种好的习惯。例如:
性别:
public enum SexEnum {
MALE,FEMALE;
}
本质上 male=0,female=1;但是用这种方式表达比直接用0,1,2,3要形象和富有意义。
这段代码实际上调用了2次 Enum(String name, int ordinal):
new Enum<EnumTest>("MALE",0);
new Enum<EnumTest>("FEMALE",1);
复杂用法:
上面的是一个最简单的最具有代表的枚举。
public enum Gender{
//通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
//赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;根据括号中的参数调用响应的构造函数
MALE("MAN"), FEMALE("WOMEN");
private final String value;
//构造器默认也只能是private, 从而保证构造函数只能在内部使用
private Gender(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
public enum OrderState {
/** 已取消 */
CANCEL {public String getName(){return "已取消";}},
/** 待审核 */
WAITCONFIRM {public String getName(){return "待审核";}},
/** 等待付款 */
WAITPAYMENT {public String getName(){return "等待付款";}},
/** 正在配货 */
ADMEASUREPRODUCT {public String getName(){return "正在配货";}},
/** 等待发货 */
WAITDELIVER {public String getName(){return "等待发货";}},
/** 已发货 */
DELIVERED {public String getName(){return "已发货";}},
/** 已收货 */
RECEIVED {public String getName(){return "已收货";}};
public abstract String getName();
}
遍历、switch 等常用操作
对enum进行遍历和switch的操作示例代码:public class Test {
public static void main(String[] args) {
for (Gender e : Gender.values()) {
System.out.println(e.toString());
}
Gender test = Gender.TUE;
switch (test) {
case MALE:
System.out.println("男人");
break;
case FEMALE:
System.out.println("女人");
break;
default:
System.out.println(test);
break;
}
}
}
在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。在Java7中,也支持了String类型。
大家也注意到了case后面不是EnumTest.MON,如果是的话,会编译报错,可以这样理解:case支持默认可以转为int的值,如果添加限定词的话,就代表一个类,如果不添加内部可能按其0,1,2处理,可以看下enum的构造函数new Enum<EnumTest>("MON",0),switch的时候默认查询比较的也是enum中的ordinal值。这个值可以看做是序号,大家可以dubug看下。
查考:
http://www.cnblogs.com/hyl8218/p/5088267.html
- java中enum用法及和swtich结合使用
- JAVA中Swtich用法
- 在java中利用enum实现swtich String类型
- 在java中利用enum实现swtich String类型
- java中Enum的使用和分析
- Java中Enum使用
- java 中enum的用法
- java中enum的用法
- Java中enum用法详解
- Java中Enum的用法
- Java中自定义枚举(Enum)项的值及int和Enum的互相转换
- Java中自定义枚举(Enum)项的值及int和Enum的互相转换
- Java中自定义枚举(Enum)项的值及int和Enum的互相转换
- Java中自定义枚举(Enum)项的值及int和Enum的互相转换
- Java 中自定义枚举(Enum)项的值及int和Enum的互相转换
- java中JMenuBar和JMenu结合使用
- Java中enum的使用
- java中enum的使用
- Android:一
- Javascript中几种较为流行的继承方式
- 确保线程安全的几种方法
- 反射(转载)
- 关于文字溢出(text-overflow)及相关延伸
- java中enum用法及和swtich结合使用
- 对Seam Carving的初步学习(一)
- 高等代数第3章 n维向量空间Kn
- android studio: Plugin with id 'com.jfrog.bintray' not found.
- CSDN日报20170710——《小公司程序员怎么进大公司》
- 【技能库】--mysql 索引失效 force index也失效-- 原因解决方案(256)
- 解决Maven项目pom.xml文件报xxx\target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)问题
- 公钥和密钥解释
- Android Service