Java回顾-枚举类

一、使用关键字enum定义枚举类

        如果类的对象只有有限个,确定的,强烈建议使用枚举类。JDK5.0后用关键字enum定义。

        -枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰

        -枚举类的使用 private final 修饰的属性应该在构造器中为其赋值

       -若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应地传入参数

        -使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类

        -enum的toString方法默认输出对象的名字,若想自定义输出内容要重写

        -必须在枚举类的第一行声明枚举类对象

enum Season {
    SPRING("1","IlikeIt"),
    SUMMER("2","IHateIt"),
    AUTUMN("3","IlikeIt"),
    WINTER("4","IHateIt");
    private final String name;
    private final String desc;

    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='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

测试:
System.out.println(Season.SPRING);
System.out.println(Season.SUMMER);

Season{name='1', desc='IlikeIt'}
Season{name='2', desc='IHateIt'}

二、Enum类的主要方法

        values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的 枚举值。

        valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常: IllegalArgumentException。

         toString():返回当前枚举类对象常量的名称

System.out.println(Season.values()[0]);
System.out.println(Season.valueOf("SUMMER"));
System.out.println(Season.WINTER.toString());


Season{name='1', desc='IlikeIt'}
Season{name='2', desc='IHateIt'}
Season{name='4', desc='IHateIt'}

三、实现接口的枚举类

        对于实现了接口的枚举类,我们要在每个枚举对象中实现接口中的方法。 

interface info{
    void voice();
}
enum Season implements info{
    SPRING("1","IlikeIt"){
        @Override
        public void voice() {
            System.out.println("春天");
        }
    },
    SUMMER("2","IHateIt") {
        @Override
        public void voice() {
            System.out.println("夏天");
        }
    },
    AUTUMN("3","IlikeIt") {
        @Override
        public void voice() {
            System.out.println("秋天");
        }
    },
    WINTER("4","IHateIt") {
        @Override
        public void voice() {
            System.out.println("冬天");
        }
    };
    private final String name;
    private final String desc;

    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='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

测试:
Season.AUTUMN.voice();
Season.WINTER.voice();

秋天
冬天

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值