您的位置:首页 > 编程语言 > Java开发

java中枚举的使用

2016-05-31 11:12 603 查看
在JDK1.5引入了新的类型——枚举,存放在 java.lang 包中。

下面是我在使用 enum 过程中的一些代码

package com.test;

// 枚举用于存放同一类型的参数
public enum TestWeekEnum {
Monday(1, "星期一"), Tuesday(2, "星期二"), Wednesday(3, "星期三"), Thursday(4, "星期四"), Friday(5, "星期五"), Saturday(
6, "星期六"), Sunday(7, "星期天");

int code;// 参数值
String destription;// 参数说明

TestWeekEnum(int code, String destription) {
this.code = code;
this.destription = destription;
}

// 判断传入code在枚举中是否存在
public boolean eqlues(TestWeekEnum type, int code) {
return code == type.code;
}

// 根据传入code返回相应的枚举类型
public static TestWeekEnum getDiscountType(int code) {
for (TestWeekEnum valuesEnum : TestWeekEnum.values()){
if (code == valuesEnum.getCode()){
return valuesEnum;
}
}
return null;
}

public int getCode() {
return code;
}

public void setCode(int code) {
this.code = code;
}

public String getDestription() {
return destription;
}

public void setDestription(String destription) {
this.destription = destription;
}

public static void main(String[] args) {
System.out.println(TestWeekEnum.Monday.code);
System.out.println(TestWeekEnum.Monday.destription);
System.out.println(TestWeekEnum.getDiscountType(3).destription);

// 枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值
TestWeekEnum testWeekEnum = TestWeekEnum.Sunday;
switch (testWeekEnum) {
case Monday:
System.out.println("week is Monday");
break;
case Tuesday:
System.out.println("week is Tuesday");
break;
case Thursday:
System.out.println("week is Thursday");
break;
case Wednesday:
System.out.println("week is Wednesday");
break;
case Friday:
System.out.println("week is Friday");
break;
case Saturday:
System.out.println("week is Saturday");
break;
case Sunday:
System.out.println("week is Sunday");
break;
default:
System.out.println("null");
break;
}

// 遍历枚举
System.out.println("遍历TestWeekEnum枚举中的值");
for (TestWeekEnum week : TestWeekEnum.values()){
System.out.println(week);
}

// 获取枚举的个数
System.out.println("TestWeekEnum枚举中的值有" + TestWeekEnum.values().length + "个");

// 获取枚举的索引位置,默认从0开始
System.out.println(TestWeekEnum.Monday.ordinal());// 0
System.out.println(TestWeekEnum.Tuesday.ordinal());// 1

// 枚举默认实现了java.lang.Comparable接口
System.out.println(TestWeekEnum.Monday.compareTo(TestWeekEnum.Sunday));// -1

}
}


enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum。实际上
enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: