java 枚举参数为对象_Java枚举值

本文详细介绍了Java中的枚举类型,包括如何定义枚举、枚举常量的使用、枚举的顺序、通过ordinal()和name()方法获取常量信息,以及如何进行枚举常量的反向查找。此外,还展示了如何使用EnumSet处理枚举常量的范围。
摘要由CSDN通过智能技术生成

枚举类型定义了两件事:

枚举常量名称

常量的顺序

以下代码声明了一个名为Level的公共枚举类型,它具有四个枚举常量:LOW,MEDIUM,HIGH 和 URGENT。

public enum Level {

LOW, MEDIUM, HIGH, URGENT;

}

Level枚举类型定义了四个枚举常量。

级别枚举类型的变量只能是以下四个值之一 - LOW,MEDIUM,HIGH 和 URGENT 或 null。可以通过使用枚举类型名称作为限定符和点符号来引用枚举常量。

以下代码将Level枚举类型常量的值分配给一些局部变量:

Level low = Level.LOW;

Level medium = Level.MEDIUM;

Level high = Level.HIGH;

Level urgent = Level.URGENT;

但是不能实例化枚举类型。例如,以下代码导致编译时错误:

Level badAttempt = new Level(); // A compile-time error

枚举顺序号 枚举类型为其所有常量分配一个顺序号,称为ordinal。顺序值从零开始,在常数列表中从第一个到最后一个依次递增1。第一个枚举常量赋值为0,第二个为1,第三个为2,依此类推。

分配给Level枚举类型中声明的常量的序数值是:将0分配给LOW,1分配给MEDIUM,2到HIGH,以及3到URGENT。

每个枚举常量都有一个与常量的标识符相同的名称。例如,级别枚举类型中的LOW常数的名称为“LOW”。可以分别使用name()和ordinal()方法获取枚举常量的名称和序号值。每个枚举类型都有一个名为values()的静态方法,它按在枚举主体中声明的顺序返回一个常量数组。

以下代码打印在Level枚举类型中声明的所有枚举常量的名称和序号。

enum Level {

LOW, MEDIUM, HIGH, URGENT;

}

public class Main {

public static void main(String[] args) {

for (Level s : Level.values()) {

String name = s.name();

int ordinal = s.ordinal();

System.out.println(name + "(" + ordinal + ")");

}

}

}

上面的代码生成以下结果。

LOW(0)

MEDIUM(1)

HIGH(2)

URGENT(3)

枚举常量的反向查找

可以从名称或位置获得枚举常量的引用。使用valueOf()方法就可以做到这点。

枚举常量的反向查找区分大小写。可以使用values()方法返回的数组,通过顺序执行反向查找。values()方法返回的数组中的值的顺序与枚举常量的声明顺序相同。枚举常量的序数从零开始。

以下代码演示了如何反转查找枚举常量:

enum Level {

LOW, MEDIUM, HIGH, URGENT;

}

public class Main {

public static void main(String[] args) {

Level low1 = Level.valueOf("LOW");

// A reverse lookup using a name

Level low2 = Level.values()[0];

// A reverse lookup using an ordinal

System.out.println(low1);

System.out.println(low2);

System.out.println(low1 == low2);

}

}

执行上面的示例代码,得到如下结果 -

LOW

LOW

true

枚举常量的范围

java.util.EnumSet集合类与枚举类型的枚举常量列表一起使用。

下面的代码演示了如何使用EnumSet类来处理枚举常量的范围。

import java.util.EnumSet;

enum Level {

LOW, MEDIUM, HIGH, URGENT;

}

public class Main {

public static void main(String[] args) {

EnumSet allLevels = EnumSet.allOf(Level.class);

print(allLevels);

EnumSet l = EnumSet.range(Level.LOW, Level.URGENT);

print(l);

}

public static void print(EnumSet levels) {

for (Level d : levels) {

System.out.println(d + " ");

}

}

}

执行上面的示例代码,得到如下结果 -

LOW

MEDIUM

HIGH

URGENT

LOW

MEDIUM

HIGH

URGENT

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值