Java中的枚举(unum)

概述

枚举类型(Enum Types)是JDK1.5之后加入的新的特性。枚举是类(class),单比类多了些特殊的约束。

特性

枚举中成员变量是有一组枚举类型的成员变量(一定有)和其他类型的成员变量(可能有)组成的,我们把这种特殊的成员变量成为枚举变量(enum type’s fields)。枚举的构造函数(constructor)决定成员变量指向的实例的类型。枚举类方法的参数(arguements)必须是枚举的成员变量。

枚举变量的命名

因为枚举变量是常量,所以枚举变量的命名规范是所有的字母大写。

枚举类的定义

在JDK1.5后,有专门的关键字enum来表示枚举。下面我用一个枚举类来定义罗盘。

//使用enum关键字定义枚举类
public enum Compass {
    EAST, SOUTH, WEST, NORTH
}

这样我们就定义了一个枚举类。需要注意的是在定义好这个compass类后,我的取值只能从这四个值中取。调用取到的值的toString()方法(例如:Compass.EAST.toString()),返回的结果是这个常量的名字的字符串(”EAST“)。

在switch循环中使用枚举

在JDK5之后,在switch循环中可以使用枚举。以下是例子:

class CompassTest {
    Compass compass;

    public CompassTest(Compass compass) {
        this.compass = compass;
    }

    public void tellCompass() {
        switch (compass) {
            case EAST:
                System.out.println("go to east!");
                break;
            case WEST:
                System.out.println("go to west!");
                break;
            case NORTH:
                System.out.println("go to north!");
                break;
            case SOUTH:
                System.out.println("go to south");
        }
    }

    public static void main(String[] args) {
        CompassTest compassTest = new CompassTest(Compass.EAST);
        compassTest.tellCompass();
    }
}

输出:

go to east!

枚举的构造函数(constructor)

枚举类型实际上是继承了(extends)了Enum类的Java类。相比于普通类,枚举类有以下特点:

  1. 枚举类的构造函数是私有的。这样就确保了外界不能通过构造方法来添加成员变量,要想调用调用枚举的成员变量吗,只能从预定义好的成员变量中选择。
  2. 枚举类的构造函数传入的是枚举类的其他类型成员变量,通过构造函数给其他成员变量赋值。

枚举的成员变量

枚举的成员变量是枚举类型,如果这个枚举类型里面还有其他成员变量(例如,String,int),在这个枚举类型的后面加上一个小括号,里面写上要传入的实例的值(例如(NORTH(“north”,1)))。每个枚举成员变量之间有逗号间隔,最后用分号结尾。

枚举的方法

枚举和普通类一样有方法。但是枚举方法和普通类的方法相比,有一定的限制。
1.传入枚举类型
2.传入枚举类型的参数(构造函数中决定)

枚举的循环

已Compass为里,用Compass.values()可以获取到成员枚举变量的实例。

枚举的equals

因为枚举中的枚举实例都是常量(constant),所以枚举的实例在程序中只有一份,所以枚举的equals实际上与==的比较结果都是相同的(因为引用的地址只有一份)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值