深入了解枚举 (enumeration)

传统方法缺陷

缺点:变量数量不确定,不能满足需求,需要枚举类实现

需要一组常量的集合,一种特定的类,其中包含一组有限的特定的对象

public class Enumeration01 {
    public static void main(String[] args) {
        Season spring = new Season("春天", "温暖");
        Season summer = new Season("夏天", "炎热");
        Season autumn = new Season("秋天", "凉爽");
        Season winter = new Season("冬天", "寒冷");
        //  缺点:变量数量不确定,不能满足需求,需要枚举类实现
        Season other = new Season("~~天", "~~~~");
    }
}
class Season{
    private String name;
    private String desc;
    public Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
}

自定义枚举类

步骤:1.构造器私有化,防止直接new出来
2.去掉set方法,防止属性被修改
3.在Season内部直接创建固定的对象
4.优化,加final修饰符

public class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);
    }
}
class Season{
    private String name;
    private String desc;

    public static final Season SPRING = new Season("春天", "温暖");
    public static final Season SUMMER = new Season("夏天", "炎热");
    public static final Season AUTUMN = new Season("秋天", "凉爽");
    public static final Season WINTER = new Season("冬天", "寒冷");

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

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season类中的内容:{" +
                "名字:'" + name + '\'' +
                ", 描述:'" + desc + '\'' +
                '}';
    }
}

使用枚举类

无参构造器创建枚举对象,可以简写

枚举对象必须写在枚举类的行首,不能继承(默认继承Enum),可以实现多个接口

public class Enumeration03 {
    public static void main(String[] args) {
		System.out.println(Season2.SPRING);
        System.out.println(Season2.SUMMER);
        System.out.println(Season2.AUTUMN);
        System.out.println(Season2.WINTER);
    }
}
enum Season2{
    /*  1.构造器私有化,防止直接new出来
        2.去掉set方法,防止属性被修改
        3.在Season内部直接创建固定的对象
        4.优化,加final修饰符
        5.无参构造器创建枚举对象,可以简写
        6.枚举对象必须写在枚举类的行首,不能继承(默认继承Enum),可以实现多个接口
     */
//    public static final Season SPRING = new Season("春天", "温暖");
//    public static final Season SUMMER = new Season("夏天", "炎热");
//    public static final Season AUTUMN = new Season("秋天", "凉爽");
//    public static final Season WINTER = new Season("冬天", "寒冷");
    SPRING("春天", "温暖"),
    SUMMER("夏天", "炎热"),
    AUTUMN("秋天", "凉爽"),
    WINTER("冬天", "寒冷"),
    WHAT;
    
    
    
    //无参构造器创建枚举对象,可以简写
    private String name;
    private String desc;

    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    private Season2(){}
    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season类中的内容:{" +
                "名字:'" + name + '\'' +
                ", 描述:'" + desc + '\'' +
                '}';
    }
}

枚举方法

  1. name
  2. ordinal (序数)
  3. values (生成数组)
  4. value of (查找)
  5. compareTo (比较)
package com.fu;

/**
 * @author 付广建
 * @version 1.0
 */
public class EnumMethod {
    public static void main(String[] args) {
        System.out.println("name =" + Season2.SPRING.name());
        System.out.println("number =" + Season2.SPRING.ordinal());
        Season2[] values = Season2.values();
        System.out.println("===for遍历:===");
        for (Season2 value : values) {
            System.out.println("number = " + value);
        }
        System.out.println("查找:" + Season2.valueOf("SPRING"));
        System.out.println("比较器比较(前减后):" + Season2.SPRING.compareTo(Season2.WINTER));

    }
}
name =SPRING
number =0
===for遍历:===
number = Season类中的内容:{名字:'春天', 描述:'温暖'}
number = Season类中的内容:{名字:'夏天', 描述:'炎热'}
number = Season类中的内容:{名字:'秋天', 描述:'凉爽'}
number = Season类中的内容:{名字:'冬天', 描述:'寒冷'}
查找:Season类中的内容:{名字:'春天', 描述:'温暖'}
比较器比较(前减后):-3

Process finished with exit code 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值