Java 枚举类型

Java 枚举类型

关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。

public class EnumClass {
    enum Shrubbery {GROUND, CARWLING, HANGING}

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for( Shrubbery s : Shrubbery.values() ) {
            System.out.println("ordinal:" + s.ordinal());
            System.out.println(s.compareTo(Shrubbery.GROUND));
            System.out.println(s.equals(Shrubbery.CARWLING));
            System.out.println(s == Shrubbery.CARWLING);
            System.out.println(s.getDeclaringClass());
            System.out.println(s.name());
            System.out.println(s.toString());
            System.out.println("===================");
        }

        for(String name : "GROUND,CARWLING,HANGING".split(",")) {
            Shrubbery shrub = Enum.valueOf(Shrubbery.class, name);
            System.out.println(shrub);
        }

    }
}

enum添加描述信息

public enum SzWatch {
    WEST("西边"),
    EAST("东边"),
    SOURTH("南边"),
    NORTH("北边");

    private String desc;

    private SzWatch(String desc) {
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }

    public static void main(String[] args) {
        SzWatch s = SzWatch.WEST;
        System.out.println(s.ordinal());
        System.out.println(s.name());
        System.out.println(s.getDesc());
    }
}

再添加一个属性

public enum SzWatch {

    WEST("西边",1),
    EAST("东边",2),
    SOURTH("南边",5),
    NORTH("北边",8);

    private String desc;

    private int flag;

    private SzWatch(String desc,int flag) {
        this.desc = desc;
        this.flag = flag;
    }

    public String getDesc() {
        return desc;
    }
    public int getFlag() {
        return flag;
    }
}

switch中的使用

一般情况下必须使用enum类型来修饰一个enum实例,但是在case语句中却不必须如此。

public static void main(String[] args) {
    SzWatch s = SzWatch.NORTH;
    switch(s) {
        case EAST:
            System.out.println( "EAST");
            break;
        case NORTH:
            System.out.println( "North");
            break;
        default :
            System.out.println( "lal");
    }
}

enum实现方法

package enumclass;

public enum Input {
    DOLLAR(10),
    SODA(100),
    TRANSACTION("desc transaction"),
    STOP {
        public int amount() { return 0;}
    },
    ABORT("abort the sys"){
        public void print(String str){System.out.println(str);}
    };

    int num;
    String desc;
    Input(){}

    Input(int value) { this.num = value;} //用于DOLLAR(10)这种描述
    Input(String desc) { this.desc = desc; } //用于TRANSACTION("xx")

    public int getValue() {
        return num;
    }
    public String getDesc() {
        return desc;
    }
    public int amount(){return -1;} //用于enum的实例方法
    public void print(String str){System.out.println(str);}

    public static void main(String[] args) {
        for(Input s : Input.values()){
            System.out.println(s.name());

            switch(s) {
            case DOLLAR:case SODA:
                System.out.println("value:" + s.getValue());break;
            case TRANSACTION:
                System.out.println("name:"+s.getDesc());break;
            case STOP:
                System.out.println(s.amount());break;
            case ABORT:
                s.print(s.getDesc());
                System.out.println(s.amount());break;
            }
        }
    }   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值