java js 枚举_Java枚举类型

枚举类型是什么?

枚举类型创建常量的有序列表作为类型。它以特定顺序指定常量。在枚举类型中定义的常量是该枚举类型的实例。

语法

使用关键字enum定义枚举类型,语法以下:

enum {

// List of comma separated names of enum constants

}

与类的访问修饰符相同:public,private,protected或package-level。

是有效的Java标识符。枚举类型的主体放在大括号中,名称后面。主体可以有逗号分隔的常数和其他元素的列表,例如实例变量,方法等。

在大多数情况下,枚举体只包括常量。

示例

以下代码声明了一个名为Gender的枚举类型,它声明了两个常量:MALE和FEMALE:

public enum Gender {

MALE, FEMALE; // The semi-colon is optional

}

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

public enum Level {

LOW, MEDIUM, HIGH, URGENT;

}

可以从应用程序中的任何位置访问公共枚举类型。公共枚举类型保留在具有枚举类型名称的文件中。 级别枚举将保存在名为Level.java的文件中。

需要在包中放置枚举类型,使用import语句来导入枚举类型。

枚举变量

声明枚举类型的变量,就像声明类的变量一样。以下代码声明Level枚举类型的errorLevel变量,如下代码所示 -

Level errorLevel;

可以为枚举类型变量分配null值,如下所示:

Level defectLevel = null;

在 switch 语句中使用枚举类型

可以在switch语句中使用枚举类型。当switch表达式是枚举类型时,所有case标签必须是同一枚举类型的枚举常量。

enum Direction {

East, South, West, North

}

public class Main {

public static void main(String args[]) {

Direction dir = Direction.South;

switch (dir) {

case South:

System.out.println("south");

break;

case East:

System.out.println("East");

break;

case West:

System.out.println("West");

break;

case North:

System.out.println("North.");

break;

}

}

}

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

south

嵌套枚举类型

可以在类,接口或另一个枚举类型中有一个嵌套的枚举类型声明。嵌套枚举类型是隐式静态的。 因为枚举类型总是静态的,所以不能在方法体内声明一个局部枚举类型。

对于嵌套枚举类型,可以使用任何访问修饰符(public,private,protected 或 package)级别。

以下代码显示了如何在Person类中声明名为Gender的嵌套公共枚举类型。

class Person {

public enum Gender {

MALE, FEMALE

}

}

public class Main {

public static void main(String[] args) {

Person.Gender m = Person.Gender.MALE;

Person.Gender f = Person.Gender.FEMALE;

System.out.println(m);

System.out.println(f);

}

}

Person.Gender枚举类型可以从应用程序中的任何位置访问,因为它已被声明为public。也可以通过使用静态导入导入枚举常量来使用枚举常量的简单名称。

import static com.java2s.enums.Person.Gender.*;

枚举类型实现接口

枚举类型可以实现接口。枚举类型实现接口的规则与实现接口的类的规则相同。

下面的代码演示了如何让枚举类型实现一个接口。

interface Command {

void execute();

}

enum Level implements Command {

LOW {

public void execute() {

System.out.println("Low...");

}

},

HIGH {

public void execute() {

System.out.println("HIGH...");

}

};

public abstract void execute();

}

public class Main {

public static void main(String... args) {

for (Command cmd : Level.values()) {

cmd.execute();

}

}

}

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

Low...

HIGH...

¥ 我要打赏

纠错/补充

收藏

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值