Java枚举类

定义一个简单的枚举类

首先我们看如何定义一个简单的枚举类,利用关键字enum修饰后该枚举类默认继承了java.lang.enum类。此时它不可以继承其它类但可以实现接口。

package Enum;
public enum SimpleColor {
    RED,BLUE,YELLOW;
}

每个枚举都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。上述代码等价于:

class SimpleColor
{
     public static final Color RED = new Color();
     public static final Color BLUE = new Color();
     public static final Color Yellow = new Color();
     // 私有的构造方法
     private Color(){}
}

自定义复杂枚举类

static、final关键字保证枚举类随着类的加载实例化且不可变。枚举类中允许定义属性,构造方法(只能是私有),普通方法和抽象方法。具体如下代码:

package Enum;

public enum Color {
    RED("red"){
        @Override
        public void showColor() {
            System.out.println("我的颜色是红色");
        }
    },
    BLUE(){
        @Override
        public void showColor() {
            System.out.println("我的颜色是蓝色");
        }
    };
    // 枚举类的属性
    private String color;
    // 枚举类的私有构造方法
    private Color(String color){this.color = color;}
    private Color(){}
    // 枚举类中的普通方法
    public String getColor(){
        return this.color;
    }
    // 枚举类中的抽象方法,需要在每一个枚举实例中实现
    public abstract void showColor();
}

操作枚举类

package Enum;
public class ColorTest {
    public static void main(String[] args) {
        // 获取指定的枚举实例
        Color red = Color.RED;
        // 通过名称获取枚举实例
        Color blue = Color.valueOf("BLUE");
        // 遍历枚举类中所有的对象
        for (Color color : Color.values()) {
            // 获取该对象在枚举类种中的索引(已经定义好的方法)
            color.ordinal();
            // 调用自定义方法
            System.out.println(color.getColor());
            color.showColor();
        }
        // 枚举类中的枚举可以在Switch语句中直接使用
        switch(blue){
            case RED:
                System.out.println("我是红色");
                break;
            case BLUE:
                System.out.println("我是蓝色");
                break;
        }
    }
}

枚举理解

枚举类中的每个枚举对象都被static final 关键字修饰且构造方法私有。我们可以用枚举类存储常量或者使用它实现单例模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值