JavaSE enumeration class Enum

1. Basic Concepts

1. When a class has only a limited number of objects, we call this class an enumeration class.
insert image description here
2. When you need to define a set of constants, it is strongly recommended to use an enumeration class

3, the implementation of the enumeration class
insert image description here

2. Custom enumeration class

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 + '\'' +
                '}';
    }
}

insert image description here

3. Use the enum keyword to define an enumeration class

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 + '\'' +
//                '}';
//    }
}

insert image description here

4. The main method of enumeration class

insert image description here

4.1. Common methods of enumeration classes

insert image description here

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 + '\'' +
//                '}';
//    }
}

insert image description here

5. Enumeration class implements interface

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("这是一个季节");
//    }

}

insert image description here

Guess you like

Origin blog.csdn.net/qq_46112274/article/details/123928728