枚举

一、简介

JDK1.5引入了新的类型——枚举。使用enum关键字。枚举enum是和class,interface同一级别的特性。可以把enum看作一个抽象类,但是它又有它的不同之处,enum不能被继承。

二、使用

1、定义

public enum TestEnum {
    MON, TUE, WED, THU, FRI, SAT, SUN;
} 

这段代码实际上内部调用了7次 Enum(String name, int ordinal):

new Enum<TestEnum>("MON",0);
new Enum<TestEnum>("TUE",1);
new Enum<TestEnum>("WED",2);

<1> 遍历操作
for (TestEnum e : TestEnum.values()) {
    System.out.println(e.toString());
}
<2> switch操作
TestEnum day = TestEnum.MON;
	
switch (day) {
	case MON:
        System.out.println("今天是星期一");
        break;
    case TUE:
        System.out.println("今天是星期二");
        break;
    // ... ...
    default:
        System.out.println(day);
        break;
}

2、enum 对象的常用方法

int compareTo(E o) : 比较此枚举与指定对象的顺序。

Class<E> getDeclaringClass() : 返回与此枚举常量的枚举类型相对应的 Class 对象。

String name() : 返回此枚举常量的名称,在其枚举声明中对其进行声明。

int ordinal() : 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

String toString() : 返回枚举常量的名称,它包含在声明中。

static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)  : 返回带指定名称的指定枚举类型的枚举常量。

3、自定义属性和方法

public enum Color {  
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
    // 成员变量  
    private String name;  
    private int index;  
    // 构造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
    }  
    // 普通方法  
    public static String getNameByIndex(int index) {  
        for (Color c : Color.values()) {  
            if (c.getIndex() == index) {  
                return c.name;  
            }  
        }  
        return null;  
    }  
    // get set 方法  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public int getIndex() {  
        return index;  
    }  
    public void setIndex(int index) {  
        this.index = index;  
    }  
} 

4、EnumSet,EnumMap 的应用

public class Test {
    public static void main(String[] args) {
        // EnumSet的使用
        EnumSet<TestEnum> weekSet = EnumSet.allOf(TestEnum.class);
        for (TestEnum day : weekSet) {
            System.out.println(day);
        }

        // EnumMap的使用
        EnumMap<TestEnum, String> weekMap = new EnumMap(TestEnum.class);
        weekMap.put(TestEnum.MON, "星期一");
        weekMap.put(TestEnum.TUE, "星期二");
        // ... ...
        for (Iterator<Entry<TestEnum, String>> iter = weekMap.entrySet().iterator(); iter.hasNext();) {
            Entry<TestEnum, String> entry = iter.next();
            System.out.println(entry.getKey().name() + ":" + entry.getValue());
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值