枚举类(Java)

文章介绍了枚举类的基本概念,例如用于表示固定数量的对象如星期、性别等,并建议在开发中对于确定数量的类实例使用枚举类。同时,文章详细展示了如何在JDK5.0中使用`enum`定义枚举类,包括声明枚举常量、构造器、实例方法等。还讨论了枚举类中的常用方法,如`toString()`、`values()`、`valueOf()`等,并提到了枚举类实现接口的两种情况:全类实现和每个枚举对象单独实现。
摘要由CSDN通过智能技术生成

1.枚举类的理解:

枚举类本质上也是一种类,只不过这个类的对象是有限的、固定的几个,不能让用户随易创建。

2.举例:

(1)星期:Monday(星期一).......Sunday(星期天)

(2)性别:Man(男)、Woman(女)

(3)月份:January(1月)......December(12月)

(4)季节:Spring(春节)......Winter(冬天)

  (5) 三原色:red(红色)、green(绿色)、blue(蓝色)

(6)支付方式:Cash(现金)、WechatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)

(7)就职状态:Busy(忙碌)、Free(空闲)、Vocation(休假)、Dimission(离职)

(8)订单状态:Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配货)、Delivered(已发货)、Checked(已检查的)

(9)线程状态:创建、就绪、运行、阻塞、死亡

3.开发中的建议

开发中,如果针对某个类,其实例是确定个数。则推荐此类声明为枚举类。

如果枚举类中实例只有一个,则可以看成是一个单例的实现方式。

4.JDK5.0中使用enum定义枚举类

详情见以下代码:

enum season{
    //1.必须在枚举类开头声明多个对象,对象之间使用,隔开
    spring("春天","万物复苏"),
    summer("夏天","热的要死"),
    fall("秋天","都黄了"),
    winter("冬天","冻得要死");
    //2.声明当前类的对象的实例变量,使用 private final来修饰
    private final String seasonname;
    private final String seasondesc;
    //3.私有化类的构造器
   private season(String seasonname, String seasondesc) {
        this.seasonname = seasonname;
        this.seasondesc = seasondesc;
    }
    //4.提供实例变量的实例方法
    public String getSeasonname() {
        return seasonname;
    }

    public String getSeasondesc() {
        return seasondesc;
    }

    @Override
    public String toString() {
        return "season{" +
                "seasonname='" + seasonname + '\'' +
                ", seasondesc='" + seasondesc + '\'' +
                '}';
    }
}

5.Enum中的常用方法

(1)使用enum关键字定义的枚举类,默认其父类是Java.long.Enum类。

    使用enum关键字定义的枚举类,不要在显示的定义其父类,否则报错。

(2)熟悉Enum中常用的方法

String toString():默认返回常量名(对象名),可以继续手动重写该方法!

值得关注)static 枚举类型 [] values():返回枚举型的对象数组。该方法可以很方便的遍历所有的枚举值,是一个静态方法

值得关注)static 枚举类型 valueOf(String name):可以把一个字符串转化为对应枚举类的对象。要求字符串必须是枚举类对象的“名字”。

String name():得到当前枚举类的名称。建议优先使用toString()。

int ordinal():返回当前枚举常量的次序号,默认从0开始。

6.枚举类实现接口的操作

情况1:枚举类实现接口,在枚举类中重写接口中的抽象方法,当通过不同的枚举类对象调用此方法时,执行的是同一个方法。

情况2: 让枚举类的每一个对象重写接口中的抽象方法。当通过不同的枚举类对象调用此方法时,执行的是不同的实现的方法。

例子:

interface  info{
    void show();
}
enum season{
    //1.必须在枚举类开头声明多个对象,对象之间使用,隔开
    spring("春天","万物复苏"){
        public void show(){
            System.out.println("春天在哪里");
        }
    },
    summer("夏天","热的要死"){
        public void show(){
            System.out.println("夏日炎炎");
        }
    },
    fall("秋天","都黄了"){
        public void show(){
            System.out.println("果实累累");
        }
    },
    winter("冬天","冻得要死"){
        public void show(){
            System.out.println("银装素裹");
        }
    };

    //2.声明当前类的对象的实例变量,使用 private final来修饰
    private final String seasonname;
    private final String seasondesc;
    //3.私有化类的构造器
   private season(String seasonname, String seasondesc) {
        this.seasonname = seasonname;
        this.seasondesc = seasondesc;
    }
    //4.提供实例变量的实例方法
    public String getSeasonname() {
        return seasonname;
    }

    public String getSeasondesc() {
        return seasondesc;
    }

    @Override
    public String toString() {
        return "season{" +
                "seasonname='" + seasonname + '\'' +
                ", seasondesc='" + seasondesc + '\'' +
                '}';
    }
}

今天的内容就到这里了,给小编点个关注点个赞吧!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值