Java enum:枚举类型

关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。这是一种非常有用的功能。—引用于java编程思想19章

本文专业术语和解释来源于java编程思想第19章 枚举类型,本人加以整理和细化,不喜勿喷

enum的基本特性
一、首先简单描述下enum的values()方法。调用enum的values()方法,可以遍历enum实例,直接代码展示好理解一点。如下:

enum qhyu{
    yuqihai,qhyu1
}
public class EnumTest {
    public static void main(String[] args) {
        for(qhyu s:qhyu.values()){
            System.out.println(s);
        }
    }
}
输出结果:
yuqihai
qhyu1

二、ordinal()方法返回一个int值,这是每个enum实例在声明时的次序,从0开始。示例如下:

enum qhyu{
    b,cb
}
public class EnumTest {
    public static void main(String[] args) {
        for(qhyu s:qhyu.values()){
            System.out.println(s+":"+s.ordinal());
        }
    }
}
输出结果:
b:0
cb:1

三、Enum类实现了comparable接口,所以具有compareTo()方法。示例如下:

enum qhyu{
    b,cb
}
public class EnumTest {
    public static void main(String[] args) {
        for(qhyu s:qhyu.values()){
            System.out.println(s.compareTo(qhyu.b));
        } 
    }
}
输出结果:
0
1

向enum中添加新方法

除了不能继承自一个enum之外,我们基本上可以将enum看做一个常规的类,也就是说,我们可以向enum中添加方法。enum甚至可以有自己的main方法。简单做了一个示例如下:

/**
 * 功能描述:创建一个枚举类
 * @author:yqh
 * @date:2018年3月27日
 */
public enum OhEnum {
    中国("大中华地区"),
    美国("呵呵"),
    日本("不描述");
    private String desc;

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

    /**
     * 功能描述:获取描述信息
     * @return desc
     * @author:yqh
     * @date:2018年3月27日
     */
    public String getDesc() {
        return desc;
    }

    public static void main(String[] args) {
        for(OhEnum s:OhEnum.values()){
            System.out.println(s+":"+s.getDesc());
        }
    }
}
输出结果:
中国:大中华地区
美国:呵呵
日本:不描述

这种情况应用比较多,目前我用到的地方就是在项目后台和前台比如 order(“退款中”,”退款失败”),在前台显示退款中,后台显示退款失败,总之灵活运用吧。

注意:如果在定义enum实例之前定义了任何的属性或者方法,编译器报错的
如果打算定义自己的方法,那么必须在enum实例序列的最后添加一个分号。


覆盖enum的方法
覆盖toString方法,将其修改为只有首字母大写的格式。

public enum SpaceShip {
    SCOUT,CARGO,TRANSPORT,CRUISER,BATTLESHIP,MOTHERSHIP;

    public String toString(){
        String id = name();
        String lower = id.substring(1).toLowerCase();
        return id.charAt(0)+lower;
    }
    public static void main(String[] args) {
        for(SpaceShip s:SpaceShip.values()){
            System.out.println(s);
        }
    }
}
输出结果:
Scout
Cargo
Transport
Cruiser
Battleship
Mothership

switch语句中的enum

enum qhyu{
    GREEN,YELLO,RED
}
public class EnumTest {
    qhyu yu = qhyu.RED;
    public void chage(){
        switch (yu) {
        case RED:
            yu = qhyu.GREEN;
            break;
        case GREEN:
            yu = qhyu.YELLO;
            break;
        case YELLO:
            yu = qhyu.RED;
            break;
        }
    }
    public String toString(){
        return "颜色啊"+yu;
    }
    public static void main(String[] args) {
        EnumTest test = new EnumTest();
        for(int i=0;i<7;i++){
            System.out.println(test);
            test.chage();
        }
    }
}
输出结果:
颜色啊RED
颜色啊GREEN
颜色啊YELLO
颜色啊RED
颜色啊GREEN
颜色啊YELLO
颜色啊RED

注意:EnumTest test = new EnumTest();时–>颜色啊RED

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code A Better Life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值