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

Java 枚举

2015-11-17 14:49 453 查看
/*
* 枚举是JDK 1.5 引入 在java.lang中
* 常用的方法 有int CompareTo(E e) 比较此枚举与指定对象的顺序
* Class<E> getDeclaringClass() 返回与此枚举类型对应的Class 对象
* String name() 返回枚举对象的名称 在枚举申明中对其进行申明
* int ordinal() 返回枚举常量的序数
* String toString()
* Static <T extends Enum<T>> T valueOf(Class<T> enumType,String name) 返回带指定名称的指定枚举类型的枚举常量

可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。
*/

package com.test.Enum;

public class EnumDemo {

public enum ColorEnum {
// 普通枚举
red, green, black, pink;
}

public enum SeasonEnum {
// 枚举需要写在最前面 否则编译出错 枚举可以像普通类一样 带有属性和方法
spring, summer, autumn, winter;
private static final String position = "test";

public static SeasonEnum getSeason() {
if ("test".equals(position)) {
return spring;
} else {
return winter;
}
}
}

public enum Gender {
// 通过括号赋值,并且必须带有一个参数构造方法和一个属性 另外一个方法 否则编译出错
MAN("MAN"), WOMAN("WOMAN");

private final String Value;

private Gender(String Value) {
this.Value = Value;
}

public String getValue() {
return Value;
}
}

public enum OrderState {
// 带抽象方法的枚举
CANCEL {
public String getName() {
return "已取消";
}
},
WAITING {
public String getName() {
return "待审核";
}
},
WAITPAMENT {
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();
}

public static void main(String[] args) {
// 枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值;
ColorEnum colorEnum = ColorEnum.black;
switch (colorEnum) {
case red:
System.out.println("color is red");
break;
case green:
System.out.println("color is green");
break;
case black:
System.out.println("color is black");
break;
case pink:
System.out.println("color is pink");
break;
default:
break;
}
// 遍历枚举
System.out.println("遍历ColorEnum中的值:");
for (ColorEnum colorEnum2 : ColorEnum.values()) {
System.out.println(colorEnum2);
}

// 获取枚举的个数
int mount = ColorEnum.values().length;
if (mount > 0) {
System.out.println("枚举有" + mount + "个");
}

// 获取每个枚举值 所在位置的索引
System.out.println("红色所在位置索引:" + ColorEnum.red.ordinal());
System.out.println("黑色所在位置的索引:" + ColorEnum.black.ordinal());
System.out.println("粉色所在位置的索引:" + ColorEnum.pink.ordinal());
System.out.println("绿色所在位置的索引:" + ColorEnum.green.ordinal());

System.out.println("枚举默认实现了Comparable接口:");
System.out.println(ColorEnum.red.compareTo(ColorEnum.green));

System.out.println("季节为:" + SeasonEnum.getSeason());

System.out.println("==============");
for (Gender gender : Gender.values()) {
System.out.println(gender.Value);
}

System.out.println("=========");
for (OrderState orderState : OrderState.values()) {
System.out.println(orderState.getName());
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: