Java枚举入门

概念:枚举主要用来定义一个有限集合内的固定值。

一、定义枚举

/**
 * 季节枚举
 */
public enum SeasonEnum {

    SPRING, SUMMER, AUTUMN, WINTER;
}

枚举编译后实际上继承了java.lang.Enum这个类。

二、常用方法

valueOf:返回指定的名字、给定类的枚举常量

toString:返回枚举常量名

oridinal:返回枚举常量在enum中的位置,从0开始

compareTo:比较枚举常量的顺序

values:返回所有的枚举数据

三、测试

示例代码如下:

/**
 * @author qx
 * @date 2023/06/20
 * @desc 枚举测试
 */
public class SeasonTest {
    public static void main(String[] args) {
        // 根据字符串获取枚举
        SeasonEnum seasonEnum = SeasonEnum.valueOf("SPRING");
        System.out.println(seasonEnum);
        System.out.println("---------------");
        
        // 打印枚举数据
        System.out.println(SeasonEnum.AUTUMN);
        System.out.println("---------------");

        // 返回枚举的位置
        System.out.println(SeasonEnum.SUMMER.ordinal());
        System.out.println("---------------");

        // 比较枚举的顺序
        System.out.println(SeasonEnum.SUMMER.compareTo(SeasonEnum.WINTER));
        System.out.println("---------------");

        //  values方法获取所有的枚举
        SeasonEnum[] seasonEnums = SeasonEnum.values();
        for (SeasonEnum enumData : seasonEnums) {
            System.out.println(enumData);
        }

    }
}

程序执行结果:

SPRING
---------------
AUTUMN
---------------
1
---------------
-2
---------------
SPRING
SUMMER
AUTUMN
WINTER

四、常见用途

枚举常常用于单例模式,能够保证对象的唯一性。

代码示例如下:

/**
 * @author qx
 * @date 2023/06/20
 * @desc 枚举创建单例测试
 */
public class MyClass {
    private MyClass() {
    }

    enum SingletonEnum {
        INSTANCE;
        private final MyClass myClass;

        private SingletonEnum() {
            myClass = new MyClass();
        }

        public MyClass getInstance() {
            return myClass;
        }
    }

    public static MyClass getInstance() {
        return SingletonEnum.INSTANCE.getInstance();
    }

    public static void main(String[] args) {
        System.out.println(MyClass.getInstance());
        System.out.println(MyClass.getInstance());
    }
}

程序执行结果:

day03.MyClass@1b6d3586
day03.MyClass@1b6d3586

你可能感兴趣的:(Java入门,java,开发语言)