快速学习JAVA枚举类(ENUM)

概述

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值