Java-枚举

发布时间:2024年01月01日

基本概念

数据类型:

  • 基本数据类型:有8个
  • 引用数据类型:数组[]、类class、抽象类abstract class、接口、枚举enum、注解@interface

枚举的应用场景:
当一个类中的对象是确定的时候,可以使用枚举,例如:一年的四季(春夏秋冬)、一年的12个月、星期1~星期7,这些都是可以一 一列举出来的。

重要属性:
1、name:表示当前枚举对象的名字。

2、name()方法:可以获取name属性。

2、ordinal:枚举对象在类中罗列的顺序,类似index从0开始。

4、ordinal()方法:可以获取枚举类中对象的序号。

3、valueOf():获取一个对应的枚举对象。

4、values():获取全部的枚举对象,返回一个数组。

5、compareTo():比较两个枚举对象,返回值是int。

我们可以在enum类中定义自己的属性或方法。
必须在enum类中第一行,描述一下枚举的样子,最后需要用分号结束。
在枚举类中可以创建构造方法,构造方法可以重载,构造方法只能用private修饰。
枚举类创建的过程中,自动帮我们创建枚举类型的对象。

代码示例:
没有枚举的时候,解决枚举的应用场景示例。
MyDay类:

package myenum;

public class MyDay {
    //类似于单例模式

    //私有构造方法
    private MyDay(){}

    //所有属性都是对象
    public static final MyDay monday = new MyDay();
    public static final MyDay tuesday = new MyDay();
    public static final MyDay wednesday = new MyDay();
    public static final MyDay thursday = new MyDay();
    public static final MyDay friday = new MyDay();
    public static final MyDay saturday = new MyDay();
    public static final MyDay sunday = new MyDay();

    //一般属性、一般方法可以随便设计

}

Test类:

package myenum;

public class Test {
    public static void main(String[] args) {
        //Day类中访问了一个对象,Day类中有七个对象
        MyDay day = MyDay.monday;

    }
}

枚举代码示例:
枚举类-Day

package myenum;

public enum Day{
    //描述了 7 个当前类的对象
    monday("星期一",1),tuesday,wednesday,thursday,friday,saturday,sunday;
    
    //定义的相关属性
    private String name;
    private int index;
    
    //属性的 get/set 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }
    
    //无参构造方法
    Day() {
    }
    
    //有参构造方法
    Day(String name, int index) {
        this.name = name;
        this.index = index;
    }
}

Test类:

package myenum;

import java.util.Date;

public class Test {
    public static void main(String[] args) {
        Day day = Day.monday;
        //day对象 除了继承自Object类外,还默认继承Enum类。默认继承Enum,间接继承Object
        String name = day.name();
        System.out.println(name);

        //获取单个枚举对象
        Day day1 = Day.valueOf("thursday");
        System.out.println(day1);

        //获取所有的枚举对象
        Day[] days = Day.values();
        for (Day value : days) {
            System.out.println(value +"--"+value.ordinal());
        }

        Day friday = Day.friday;
        friday.setName("星期五");
        String name1 = friday.getName();
        System.out.println(name1);
    }
}
文章来源:https://blog.csdn.net/qq_48269763/article/details/135321091
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。