快速学习JAVA枚举类(ENUM)

版权声明:如果转载或使用本博客,请标明出处 https://blog.csdn.net/Black1499/article/details/81708606

概述

enum的全称为enumeration, 是 JDK 1.5中引入的新特性,存放在 java.lang包中。在某些情况下,一个类的对象是固定的,就可以定义为枚举。在实际使用中,枚举类型也可以作为一种规范,保障程序参数安全。

特点

  1. Java中枚举和类、接口的级别相同。
  2. 枚举和类一样,都有自己的属性、方法、构造方法,不同点是:枚举的构造方法只能是private修饰,也就无法从外部构造对象。构造方法只在构造枚举值时调用。
  3. 使用enum关键字声明一个枚举类型时,就默认继承自Java中的 java.lang.Enum类,并实现了java.lang.Seriablizable和 java.lang.Comparable两个接口。
  4. 所有的枚举值都是 public static final 的,且非抽象的枚举类不能再派生子类。
  5. 枚举类的所有实例(枚举值)必须在枚举类的第一行显式地列出,否则这个枚举类将永远不能产生实例。
  6. 判断枚举是否相同时,使用 == 和 equals 是一样的。

用法

1、常量

在普通的类中,我们定义常量的方式如下:

public static final String SEASON_SPRING="春天";
public static final String SEASON_SUMMER="夏天";
public static final String SEASON_FALL="秋天";
public static final String SEASON_WINTER="冬天";

但是这样做会有一定的缺陷:

  1. 类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是String类型,开发者传入任意类型的String类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象

  2. 没有命名空间。开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。

使用enum枚举类声明常量

public enum Season {
    //常量无参数
    SPRING,SUMMER,FALL,WINTER;


    //常量有参数
    /*
    SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天");

    private final String NAME;
    private Season(String name) {
        this.NAME = name;
    }
    */
}

2、switch选择枚举类常量

Season season=null;
    switch (season){
        case SPRING:
            season=Season.SPRING;
            break;
        case SUMMER:
            season=Season.SUMMER;
            break;
        case FALL:
            season=Season.FALL;
            break;
        case WINTER:
            season=Season.WINTER;
            break;
    }

3、枚举类添加成员

枚举类可以填加属性,方法,可以使静态的,也可以是非静态的。

//属性
private  String name;
//构造方法
private Season(String name) {
    this.name = name;
}
//get方法
public String getName() {
    return name;
}
//set方法
public void setName(String name) {
    this.name = name;
}

4、覆盖枚举方法

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

5、实现接口

interface MyInterface{
    void print();
}

public enum Season implements MyInterface{

    @Override
    public void print() {
        System.out.println("季节");
    }
}

6、使用接口组织枚举

public interface Food {  
    enum DRINK implements Food{  
        COKE,COFFEE,JUICE 
    }  
}  
总结

这里只是简单的认识一下枚举类以及经常见到的使用它的方法,如想了解更多可以参考博客:
http://www.cnblogs.com/sister/p/4700702.html
https://blog.csdn.net/qq_27093465/article/details/52180865
https://www.jb51.net/article/99557.htm

猜你喜欢

转载自blog.csdn.net/Black1499/article/details/81708606