Clase de enumeración JavaSE Enum

1. Conceptos básicos

1. Cuando una clase tiene solo un número limitado de objetos, llamamos a esta clase una clase de enumeración.
inserte la descripción de la imagen aquí
2. Cuando necesite definir un conjunto de constantes, se recomienda encarecidamente utilizar una clase de enumeración

3, la implementación de la clase de enumeración
inserte la descripción de la imagen aquí

2. Clase de enumeración personalizada

package com.example.java;

/**
 * 一、枚举类的使用
 * 1、枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类
 * 2、当需要定义一组常量时,强烈建议使用枚举类
 * 3、如果枚举类中只有一个对象、则可以作为单例模式的实现方式
 *
 * 二、如何定义枚举类
 * 方式一:在jdk5.0之前,自定义枚举类
 * 方式二:jdk5.0之后,可以使用enum关键字定义枚举类
 *
 * Author: 
 * DATE: 2022/4/2 22:42
 */
class seasonTest01 {
    
    
    public static void main(String[] args) {
    
    
        Season spring = Season.SPRING;
        System.out.println(spring);
    }
}
//自定义枚举类
class Season{
    
    
    //声明Season对象的属性
    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 Season SPRING = new Season("春天","吹暖花开");
    public static final Season SUMMER = new Season("夏天","夏日炎炎");
    public static final Season AUTUMN = new Season("秋天","秋高气爽");
    public static final Season WINTER = new Season("冬天","冰天雪地");

    public String getSeasonName() {
    
    
        return seasonName;
    }

    public String getSeasonDesc() {
    
    
        return seasonDesc;
    }

    @Override
    public String toString() {
    
    
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}

inserte la descripción de la imagen aquí

3. Use la palabra clave enum para definir una clase de enumeración

package com.example.java;

/**
 * 使用enum关键字定义枚举类
 *
 * Author: 
 * DATE: 2022/4/2 22:42
 */
public class SeasonTest02 {
    
    
    public static void main(String[] args) {
    
    
        Season2 spring = Season2.SPRING;
        System.out.println(spring);
        //说明:定义的枚举类默认继承与于java.long.Enum类
        System.out.println(Season2.class.getSuperclass());//class java.lang.Enum
    }
}
//使用enum关键字定义枚举类
enum Season2 {
    
    
    //1、提供当前枚举类的对象,多个对象之间用逗号隔开,末尾的对象分号结束
    SPRING("春天","吹暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");

    //2、声明Season对象的属性
    private final String seasonName;
    private final String seasonDesc;

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

    public String getSeasonName() {
    
    
        return seasonName;
    }

    public String getSeasonDesc() {
    
    
        return seasonDesc;
    }

//    @Override
//    public String toString() {
    
    
//        return "Season{" +
//                "seasonName='" + seasonName + '\'' +
//                ", seasonDesc='" + seasonDesc + '\'' +
//                '}';
//    }
}

inserte la descripción de la imagen aquí

4. El método principal de la clase de enumeración.

inserte la descripción de la imagen aquí

4.1 Métodos comunes de clases de enumeración

inserte la descripción de la imagen aquí

package com.example.java;

/**
 * 使用enum关键字定义枚举类
 *
 * Author: cui
 * DATE: 2022/4/2 22:42
 */
public class SeasonTest02 {
    
    
    public static void main(String[] args) {
    
    
        //1、toString();
        System.out.println("*************toString();**************");
        Season2 spring = Season2.SPRING;
        System.out.println(spring);
        
        //2、values()
        System.out.println("*************values()**************");
        Season2[] values = Season2.values();
        for (int i = 0; i < values.length; i++) {
    
    
            System.out.println(values[i]);
        }

        //3、valueOf(String objName):返回枚举类中对象名是objName的对象
        System.out.println("*************valueOf(String objName)**************");
        Season2 winter = Season2.valueOf("WINTER");
        System.out.println(winter);
    }
}
//使用enum关键字定义枚举类
enum Season2 {
    
    
    //1、提供当前枚举类的对象,多个对象之间用逗号隔开,末尾的对象分号结束
    SPRING("春天","吹暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");

    //2、声明Season对象的属性
    private final String seasonName;
    private final String seasonDesc;

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

    public String getSeasonName() {
    
    
        return seasonName;
    }

    public String getSeasonDesc() {
    
    
        return seasonDesc;
    }

//    @Override
//    public String toString() {
    
    
//        return "Season{" +
//                "seasonName='" + seasonName + '\'' +
//                ", seasonDesc='" + seasonDesc + '\'' +
//                '}';
//    }
}

inserte la descripción de la imagen aquí

5. La clase de enumeración implementa la interfaz

package com.example.java;

import java.lang.ref.SoftReference;
import java.sql.SQLOutput;

/**
 * 使用enum关键字定义枚举类
 * 三、Enum类中的常用方法
 *  values()方法:返回枚举类型的对象数组,该方法可以很方便地遍历所有的枚举值
 *  valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象
 *  toString():返回的是当前枚举类对象常量的名称
 *
 * 四、使用enum关键字定义枚举类实现接口的情况
 *
 * Author: cui
 * DATE: 2022/4/2 22:42
 */
public class SeasonTest02 {
    
    
    public static void main(String[] args) {
    
            
        //2、values()
        System.out.println("*************values()**************");
        Season2[] values = Season2.values();
        for (int i = 0; i < values.length; i++) {
    
    
            System.out.println(values[i]);
            values[i].show();
        }
    }
}

//接口
interface info{
    
    
    void show();
}

//使用enum关键字定义枚举类
enum Season2 implements info{
    
    
    //1、提供当前枚举类的对象,多个对象之间用逗号隔开,末尾的对象分号结束
    SPRING("春天","吹暖花开"){
    
    
        @Override
        public void show() {
    
    
            System.out.println("这是春季");
        }
    },
    SUMMER("夏天","夏日炎炎"){
    
    
        @Override
        public void show() {
    
    
            System.out.println("这是夏季");
        }
    },
    AUTUMN("秋天","秋高气爽"){
    
    
        @Override
        public void show() {
    
    
            System.out.println("这是秋季");
        }
    },
    WINTER("冬天","冰天雪地"){
    
    
        @Override
        public void show() {
    
    
            System.out.println("这是冬季");
        }
    };

    //2、声明Season对象的属性
    private final String seasonName;
    private final String seasonDesc;

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

    public String getSeasonName() {
    
    
        return seasonName;
    }

    public String getSeasonDesc() {
    
    
        return seasonDesc;
    }

//    @Override
//    public void show() {
    
    
//        System.out.println("这是一个季节");
//    }

}

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_46112274/article/details/123928728
Recomendado
Clasificación