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

《小平工作日志》Java 中 Enum 枚举类型使用大全

2016-03-23 00:00 726 查看
摘要: 以下使用方法,需要在JDK1.5以上。
如果后续增加其他使用枚举的地方,会一直更新。

一、定义常量使用

1. 简单常量

public enum Status {
/**
* 成功,失败,其它
*/
SUCCESS, ERROR, OTHER
}
/**
*    测试与使用
*/
public class Test{
public static void main(String[] args){
System.out.println(Status.SUCCESS);// 输出:SUCCESS
System.out.println(Status.ERROR);// 输出:ERROR
System.out.println(Status.OTHER);// 输入:OTHER
}
}

上面这一种是:使用enum作为常量的最简的一种方式,枚举变量即为常量值。

2. 值常量

// 也可以给枚举赋值。
public enum Status {
/**
* 成功,失败,其它
*/
SUCCESS(1), ERROR(2), OTHER(3);// 注意:如果要在这个类里面写其它方法,最后一个枚举量那里必须加上 括号时面的<;>。

/**
* 这里要注意: 1.构造器,必须是private私有的。
* 2. 想要为枚举变量赋什么类型的值,这里构造器就传什么类型的参数。
* 只限基本类型  以及String类型。
* 此例拿int类型作介绍。
*/
private int value;
private Status(int value){
this.value= value;
}
}
/**
*    测试与使用
*/
public class Test{
public static void main(String[] args){
System.out.println(Status.SUCCESS);// 输出:SUCCESS
System.out.println(Status.ERROR);// 输出:ERROR
System.out.println(Status.OTHER);// 输入:OTHER

System.out.println(Status.ERROR.getValue());// 输出:2
System.out.println(Status.ERROR.name());// 输出ERROR<这个是java.lang.Enum中的自带方法,默认Status继承java.lang.Enum的>
}
}

上面这种是:使用被赋值的枚举作为常量。

3. 使用接口管理枚举常量,可很好的为枚举分组

/**
* 通过接口统一管理常. 此处以类型作为分组进行管理。
* 也可以自定义分组,支持多类型,有多少个类型,就有多少个构造器即可。
*/
public interface AllConstants {

/**
* 值为int类型的
*/
enum IntConstants implements AllConstants {
YES(1), NO(2);

private int value;

private IntConstants(int value) {
this.value = value;
}

public int getValue() {
return this.value;
}
}

/**
* 值为String类型的
*/
enum StringConstants implements AllConstants {
YES("one"), NO("two");

private String value;

private StringConstants(String value) {
this.value = value;
}

public String getValue() {
return this.value;
}
}
}

/**
*    测试与使用
*/
public class Test{
public static void main(String[] args){
System.out.println(AllConstants.IntConstants.YES);// 输出:YES
System.out.println(AllConstants.IntConstants.YES.getValue());// 输出:1

System.out.println(AllConstants.StringConstants.YES);// 输出:YES
System.out.println(AllConstants.StringConstants.YES.getValue());// 输出:one
}
}

上面这种是:使用一个接口统一管理枚举常量,按分组来管理。

二、swith方法可使用枚举enum


public enum Status{
/**
* 成功,失败,其它
*/
SUCCESS, ERROR, OTHER
}
/**
*    测试与使用
*/
public class Test{

public void testSwith(){
Status param= Status.SUCCESS;
switch (param) {
case SUCCESS:
System.out.println("值为:SUCCESS");// 这一句会输出。
break;
case ERROR:
System.out.println("值为:ERROR");
break;
case OTHER:
System.out.println("值为:OTHER");
break;
default:
break;
}
}
}

三、枚举集合的使用
java.util.EnumSetjava.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。

/**
*    EnumSet的使用方法
*/
public class Test {
public static void main(String[] args) {

EnumSet<Status> enumSet = EnumSet.allOf(Status.class);

for (Status status : enumSet) {
System.out.println(status.name());// 值

System.out.println(status.ordinal());// 顺序
}
}
}

/**
*    EnumSet的使用方法
*/
public class Test {
public static void main(String[] args) {

EnumMap<Status, String> enumMap = new EnumMap<Status, String>(
Status.class);
enumMap.put(Status.SUCCESS, "成功");
enumMap.put(Status.ERROR, "绿灯");
enumMap.put(Status.OTHER, "其它");
// 2.遍历对象
for (Status status : Status.values()) {
System.out.println("[key=" + status.name() + ",value="
+ enumMap.get(status) + "]");
}
}
}

三、注意:enum类型不可在继承,因为已经默认继承了java.lang.Enum。enum类的构造器需要是private声明的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: