Java枚举类与注解——一篇文章读懂枚举类与注解

一、枚举类

类的对象只有有限个, 确定的. 我们称此类为枚举类.

说明:

  1. 类的对象只有有限个,确定的。如:
    • 星期:Monday(星期一)、…、Sunday(星期天)
    • 性别:Man(男)、Woman(女)  季节:Spring(春节)…Winter(冬天)
    • 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银 行卡)、CreditCard(信用卡)
    • 就职状态:Busy、Free、Vocation、Dimission
    • 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、 Return(退货)、Checked(已确认)Fulfilled(已配货)
    • 线程状态:创建、就绪、运行、阻塞、死亡
  2. 当需要定义一组常量时,强烈建议使用枚举类。
  3. 若枚举只有一个对象, 则可以作为一种单例模式的实现方式。

枚举类的实现:

  1. JDK1.5之前需要自定义枚举类。
  2. JDK 1.5 新增的 enum 关键字用于定义枚举类。

枚举类的属性:

  1. 枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰。
  2. 枚举类的使用 private final 修饰的属性应该在构造器中为其赋值。
  3. 若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的 传入参数。

① 自定义枚举类

通过自己写一个自定义的类来实现自定义枚举类。

自定义枚举类的实现:

  1. 私有化类的构造器,保证不能在类的外部创建其对象。

  2. 在类的内部创建枚举类的实例。声明为:public static final。

  3. 对象如果有实例变量,应该声明为private final,并在构造器中初始化。

Demo:

package com.broky.EnumClass;

/**
 * 自定义枚举类
 *
 * @author 13roky
 * @date 2021-05-13 17:16
 */
public class SeasonTest {
   
    public static void main(String[] args) {
   
        Season spring = Season.SPRING;
        System.out.println(spring);
    }
}

// 自定义枚举类
class Season{
   
    // 1. 声明 Season 对象的属性
    // final 不能使用初始化赋值, 可以手动 显式赋值, 构造器赋值, 代码块赋值
    // 现式赋值和代码块赋值 会导致创建当前类的不同对象时 他们的这些属性都是一样的
    // 构造器赋值 可以在实例化的时候设置属性
    private final String seasonName;
    private final String seasonDesc;

    // 2. 私有化类的构造器, 并给对象属性赋值
    private Season(String seasonName, String seasonDesc){
   
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    // 3. 提供当前枚举类的多个对象 : public static final 的
    public static Season SPRING = new Season("春天","春暖花开");
    public static Season SUMMER = new Season("夏天","夏日炎炎");
    public static Season AUTUMN = new Season("秋天","秋高气爽");
    public static Season WINTER = new Season("冬天","冰天雪地");

    // 4. 其它诉求1 : 获取枚举类对象的属性
    public String getSeasonName() {
   
        return seasonName;
    }

    public String getSeasonDesc() {
   
        return seasonDesc;
    }

    // 5. 其他诉求2 : 提供toString()
    @Override
    public String toString() {
   
        return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}';
    }
}

② enum关键字定义枚举类

通过使用enum关键字,和一些简便的规则,更方便枚举类的创建

说明:

  1. enum 枚举类是继承 java.lang.Enum 类的,所以其中如果不重写 toString 使用的是 java.lang.Enum 中的 toString,不会输出内存地址,而是会打印对象名

enum 枚举类的实现:

  1. 使用 enum 声明类为枚举类。

  2. 在枚举类的开头首先定义枚举类中所需要的对象。

    • 枚举类对实例化枚举类的对象做了简化

      只需要使用 对象名(参数···) 就可以完成实例化,如:

      PRING("春天", "春暖花开"), WINTER("冬天", "冰天雪地");

      多个对象用 “,” 隔开,最后一个以 “;” 结尾

      如果没有属性,可以去掉括号,如:

      PRING, WINTER;

  3. 其余规则均与自定义枚举类相同。

Demo:

package com.broky.EnumClass;

/**
 * @author 13roky
 * @date 2021-05-13 18:32
 */
public class SeasonTest1 {
   
    public static void main(String[] args) {
   
        Season1 spring = Season1.SPRING;
        System.out.println(spring);
        System.out.println(Season1.class.getSuperclass());
    }
}

enum Season1 {
   
    // 1. 提供当前枚举类的对象, 多个对象之间用","隔开, 末尾对象用";"结束
    SPRING("春天", "春暖花开"), 
    SUMMER("夏天", "夏日炎炎"), 
    AUTUMN("秋天", "秋高气爽"), 
    WINTER("冬天", "冰天雪地");

    // 2. 声明 Season 对象的属性 : private final 修饰
    private final String seasonName;
    private final String seasonDesc;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值