Java学习笔记——枚举

为什么要用枚举(enum)

  • 当一个类的对象是固定的,不会有更多,如果按照以前的设计思路,用户可以自己修改对象,就不能体现这个类的对象是固定的,所以引出了枚举类。
  • 所谓枚举,就是把具体的对象一个一个列举出来
  • 枚举类只读,不可以修改

什么是枚举

  • 是一组常量的集合

实现方式

  • 自定义类实现枚举
  • 使用enum关键字

自定义类实现枚举

  1. 将构造器私有化,防止直接new
  2. 去掉setXxx方法,防止属性被修改
  3. 在该类内部创建固定的对象
  4. public static final修饰对象,优化底层
package enum_;

public class EnumDemo {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.AUTUMN);
    }
}

class Season {

    private String name;

    public final static Season SPRING = new Season("春");
    public final static Season SUMMER = new Season("夏");
    public final static Season AUTUMN = new Season("秋");
    public final static Season WINTER = new Season("冬");

    private Season(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                '}';
    }
}

使用关键字enum

  1. 使用enum代替class
  2. public final static Season SPRING = new Season("春");SPRING("春天")代替
  3. 如果有多个常量,用,间隔
  4. 把定义的常量写在最前面
package enum_;
/**
 * @author: ashling
 * @description: 使用enum实现枚举
 * @date: 2021/10/31 8:24 下午
 */
public class EnumDemo1{
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.AUTUMN);
    }
}

enum Season1 {
    // 把定义的常量写在最前面
    SPRING("春天"),SUMMER("夏天");

    private String name;

    private Season1(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                '}';
    }
}

注意事项

  1. 使用enum关键字开发枚举类,会默认继承Enum类
  2. 如果使用无参构造器,则在创建枚举对象的时候可以把()省略
  3. 枚举对象要放在枚举类的最前面

enum常用方法

ordinal()

输出的是该枚举对象的次序,从0开始编号

values()

含有定义的所有枚举对象

valuesOf()

将字符串转成枚举对象,要求字符串必须为已有的常量名

compareTo()

比较两个枚举常量,比较的是编号

enum实现接口

  1. 使用enum之后不能再继承其他类,因为enum隐式继承了Enum
  2. enum仍然是个类,所以可以实现接口
interface IRest {
    public void rest();
}

enum Week implements IRest{
    MONDAY("周一"),TUESDAY("周二"),WEDNESDAY("周三"),
    THURSDAY("周四"),FRIDAY("周五"),SATURDAY("周六"),SUNDAY("周日");

    private String day;

    Week(String day) {
        this.day = day;
    }

    @Override
    public String toString() {
        return day;
    }

    @Override
    public void rest() {
        System.out.println("一周内有2天休息。");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值