Java枚举类浅析

Java枚举类浅析

@(Java)
Enum是enumeration(列举)的简写形式,包含在java.lang包中。能使代码有更好的阅读性和安全性。

1.实例

直接上实例:

package com.enums.test;


public enum Color {

    RED("红", 101),
    YELLOR("黄", 102),
    BLUE("蓝", 103),
    GREEN("绿", 104);

    private String desc;    

    private Integer num;

    private Color(String desc, Integer num) {
        this.desc = desc;
        this.num = num;
    }

    public static Color getEnum(Integer num) {
        for (Color color : Color.values()) {
            if (num == color.num)
                return color;
        }
        return null;
    }

    public static String getEnumDesc(Integer num) {
        for (Color color : Color.values()) {
            if (num.equals(color.num))
                return color.desc;
        }
        return null;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }
}

2.java.lang.enum api

2.1 ordinal

返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。被设计用于复杂的基于枚举的数据结构,比如 EnumSet 和 EnumMap。

    public static void main(String[] args) {
        //打印出0
        System.out.println(Color.RED.ordinal());
        //打印出2
        System.out.println(Color.BLUE.ordinal());
    }
2.2 getDeclaringClass

返回与此枚举常量的枚举类型相对应的 Class 对象。当且仅当 e1.getDeclaringClass() == e2.getDeclaringClass() 时,两个枚举常量 e1 和 e2 的枚举类型才相同。(由该方法返回的值不同于由 Object.getClass() 方法返回的值, Object.getClass() 方法用于带有特定常量的类主体的枚举常量。)

public enum Size {
    //如果枚举类没有这种特殊的自定义class方法的话,getClass与getDeclaringClass将会返回相同的东西
    BIG{
        void desc(){
            System.out.println("Big");
        }
    },
    SMALL{
        void desc(){
            System.out.println("Small");
        }
    }
}


public static void main(String[] args) {
    //false
    System.out.println(Size.BIG.getClass() == Size.SMALL.getClass());
    //true
    System.out.println(Size.BIG.getDeclaringClass() == Size.SMALL.getDeclaringClass());
    }
2.3 compareTo

比较此枚举与指定对象的顺序。在该对象小于、等于或大于指定对象时,分别返回负整数、零或正整数。 枚举常量只能与相同枚举类型的其他枚举常量进行比较。该方法实现的自然顺序就是声明常量的顺序。

public static void main(String[] args) {
    //-1
    System.out.println(Color.BLUE.compareTo(Color.GREEN));
    //1
    System.out.println(Color.BLUE.compareTo(Color.YELLOR));
    //2
    System.out.println(Color.BLUE.compareTo(Color.RED));
    //0
    System.out.println(Color.BLUE.compareTo(Color.BLUE));
}
2.4 valueOf

返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)

public static void main(String[] args) {
    Color color = Color.valueOf(Color.class, "RED");
    System.out.println(color.name());
}

3.枚举类的switch使用

//这样就限定了参数必须为Color枚举类,保证了安全性
public static String getColorDesc(Color color){
        String colorDesc = "";
        switch (color) {
        case RED:
            colorDesc = "红色";
            break;
        case BLUE:
            colorDesc = "蓝色";
            break;
        case YELLOR:
            colorDesc = "黄色";
            break;
        case GREEN:
            colorDesc = "绿色";
            break;
        default:
            colorDesc = "";
            break;
        }
        return colorDesc;

    }

4.参考

http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值