java枚举类

枚举类的使用

类的对象只有有限个,确定的。比如星期:Monday、Tuesday、···· 、Sunday
当需要定义一组常量时,强烈建议使用枚举类

常用方法 values(),valueof(),toString()

import java.lang.Thread.State;

public class EnumTest3 {
    public static void main(final String[] args) {
        //values()返回枚举类型的对象数组
        final Thread.State[] stateValues = Thread.State.values();
        for (final State element : stateValues) {
            System.out.println(element);
        }
        System.out.println("\n****************************************");
        //valueOf()可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的"名字"
        final Thread.State state1 = Thread.State.valueOf("RUNNABLE");
        System.out.println(state1);
        System.out.println("\n****************************************");
        //toString()返回当前枚举类对象常量的名称
        System.out.println(Thread.State.BLOCKED);
    }
}

运行结果

NEW
RUNNABLE
BLOCKED
WAITING
TIMED_WAITING
TERMINATED

****************************************
RUNNABLE

****************************************
BLOCKED

自定义枚举类

public class EnumTest2 {
    public static void main(final String[] args) {
        System.out.println(Hero.CaoCao);
    }
}
class Hero {
    public static final Hero CaoCao = new Hero("曹操", "孟德");
    public static final Hero LiuBei = new Hero("刘备", "玄德");
    public static final Hero SunQuan = new Hero("孙权", "仲谋");

    private final String name;
    private final String desc;

    private Hero(final String name, final String desc) {
        this.name = name;
        this.desc = desc;
    }

    @Override
    public String toString() {
        return this.name + ",字" + this.desc;
    }
}

运行结果

曹操,字孟德
刘备,字玄德
孙权,字仲谋

enum关键字定义枚举类

public class EnumTest {

    public static void main(final String[] args) {
        System.out.println(Heros.CaoCao);
        System.out.println(Heros.LiuBei);
        System.out.println(Heros.SunQuan);
    }

}

enum Heros {
    CaoCao("曹操", "孟德"),
    LiuBei("刘备", "玄德"),
    SunQuan("孙权", "仲谋");

    private final String name;
    private final String desc;

    private Heros(final String name, final String desc) {
        this.name = name;
        this.desc = desc;
    }

    @Override
    public String toString() {
        return this.name + ",字" + this.desc;
    }

}

运行结果

曹操,字孟德
刘备,字玄德
孙权,字仲谋

如果不重写toString()方法,运行结果返回的是枚举对象常量的名称

CaoCao
LiuBei
SunQuan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值