Java枚举类

简介

枚举类型是一种特殊的数据类型,枚举类型变量的值只能是预定义的常量,通常用枚举类型来表示固定的常量集合。比如,方向分为东南西北,则可以定义一个枚举类型Direction,它的值为EAST、SOUTH、WEST、NORTH。

如何创建枚举类型

创建枚举类型非常简单,使用enum关键字代替class关键字来创建一个类,然后在类里面定义一组常量。示例如下:

public enum Direction {
	EAST, SOUTH, WEST, NORTH
}

如何使用枚举类型

使用枚举类的示例代码如下:

	public void test() {
        printDirection(Direction.EAST);
        printDirection(Direction.WEST);
    }

    private void printDirection(Direction direction) {
        switch (direction) {
            case Direction.EAST:{
                System.out.println("the direction is east");
                break;
            } case Direction.SOUTH:{
                System.out.println("the direction is south");
                break;
            } case Direction.WEST:{
                System.out.println("the direction is west");
                break;
            } case Direction.NORTH:{
                System.out.println("the direction is north");
                break;
            } default:{
                System.out.println("unknown ");
                break;
            }
        }
    }

方法test()的执行结果:

the direction is east
the direction is west

枚举类探究

Java的枚举类型是一个Java类,隐式继承java.lang.Enum类。枚举类型是一个Java类意味着可以为枚举类型添加属性和普通方法,但是枚举类型的构造器应该设置为private或package-private。在比较两个枚举类型的值时,使用“==”比较而不是“equals”比较。示例代码:

public enum Size {

    SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
    
    private final String abbr;
    
    public String getAbbr() {
        return abbr;
    }
    
    Size(String abbr) {
        this.abbr = abbr;
    }
}

toString()方法返回枚举常量名,Enum.valueOf()方法则解析一个字符串得到枚举类型对象,values()方法返回一个包含枚举值的所有值的数组,ordinal()方法返回该枚举值定义的顺序。使用枚举类型Size的代码:

	public void testFieldAndMethod() {
        System.out.println(Size.MEDIUM.toString());
        System.out.println(Enum.valueOf(Size.class, "MEDIUM") == Size.MEDIUM);
        System.out.println(Size.MEDIUM.getAbbr());

        System.out.println("获取所有枚举值:");
        for (Size size : Size.values()) {
            System.out.println(size.ordinal());
            System.out.println(size.toString());
            System.out.println(size.getAbbr());
            System.out.println("------------");
        }
    }

执行结果:

MEDIUM
true
M
获取所有枚举值:
0
SMALL
S
------------
1
MEDIUM
M
------------
2
LARGE
L
------------
3
EXTRA_LARGE
XL
------------

参考资料:
[1]: https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
[2]: Java核心技术·卷一

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值