栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习笔记——枚举

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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_;

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天休息。");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号