Java-enum枚举

1 枚举概述:

枚举:现实生活中有很多事物都是有限个的,比如一年只有四个季节,对应到java类中,一个季节类只能创建出4个对象,不能再多像这样描述一个只有有限个对象,我们把这个类定义为枚举类。
  • 在JDK1.5之前呢,我们使用自定义枚举类
  • 在JDK1.5之后,java提供了enum关键字来定义枚举类

JDK1.5之前注意事项:

  • 1 成员变量私有化且用final关键字修饰,外界不能去修改也不能直接获取
  • 2 构造方法私有化使用private关键字修饰,保证类的个数个有限;
  • 3 在枚举类中创建对象,因为外界无法创建对象,又想让外界获取,所以改成静态的,可以直接通过类名访问
  • 4 提供公共的get方法获得属性;
package com.bigdat.java.day19;
import javax.swing.*;
/*
        枚举:现实生活中有很多事物都是有限个的,比如一年只有四个季节,对应到java类中,一个季节类只能创建出4个对象,不能再多
        像这样描述一个只有有限个对象,我们把这个类定义为枚举类。
        在JDK1.5之前呢,我们使用自定义枚举类
        在JDK1.5之后,java提供了enum关键字来定义枚举类
 */
class Season1{
    private final String SEASON_NAME;
    private final String SEASON_DESC;
    
    private Season1(String SEASON_NAME, String SEASON_DESC) {
        this.SEASON_NAME = SEASON_NAME;
        this.SEASON_DESC = SEASON_DESC;
    }
   public static final Season1 SPRING =  new Season1("Spring","春意黯然");
    public static final Season1 SUMMER =  new Season1("Summer","夏日炎炎");
    public static final Season1 AUTUMN =  new Season1("Autumn","硕果累累");
    public static final Season1 WINTER =  new Season1("Winter","寒风凌冽");

    public  String getSEASON_NAME() {
        return SEASON_NAME;
    }

    public String getSEASON_DESC() {
        return SEASON_DESC;
    }

    @Override
    public String toString() {
        return "Season1{" +
                "SEASON_NAME='" + SEASON_NAME + '\'' +
                ", SEASON_DESC='" + SEASON_DESC + '\'' +
                '}';
    }
}
public class EnumDemo1 {
    public static void main(String[] args) {
        //获取春天并使用
        Season1 spring = Season1.SPRING;
        System.out.println(spring.getSEASON_NAME()+"-----"+ spring.getSEASON_DESC());
    }
}

在JDK1.5之后,java提供了enum关键字来定义枚举类

  • 注意事项:在枚举类中创建对象,因为外界无法创建对象,又想让外界获取,所以改成静态的,可以直接通过类名访问在enum修饰的枚举类中必须放在第一个位置。!!直接-类名(),类名()……;

代码如下:(还可以用匿名内部类实现方法)

package com.bigdat.java.day19;
interface Play{
    void fun();
}
enum Season2 implements Play{
    SPRING("Spring","春意黯然"){
        @Override
        public void fun() {
            System.out.println("看我像不像匿名内部类");
        }
    },
    SUMMER("Summer","夏日炎炎"){
        @Override
        public void fun() {

        }
    },
    AUTUMN("Autumn","硕果累累"){
        @Override
        public void fun() {

        }
    },
    WINTER("Winter","寒风凌冽"){
        @Override
        public void fun() {

        }
    };

    private final String SEASON_NAME;
    private final String SEASON_DESC;

    private Season2(String SEASON_NAME, String SEASON_DESC) {
        this.SEASON_NAME = SEASON_NAME;
        this.SEASON_DESC = SEASON_DESC;
    }

    public String getSEASON_NAME() {
        return SEASON_NAME;
    }

    public String getSEASON_DESC() {
        return SEASON_DESC;
    }
}
public class EumnDemo3 {
    public static void main(String[] args) {
        Season2 spring = Season2.SPRING;
        System.out.println(spring.getSEASON_DESC()+"--------"+spring.getSEASON_DESC());
        spring.fun();

    }
}

posted @ 2022-03-30 09:57  a-tao必须奥利给  阅读(47)  评论(0编辑  收藏  举报