java enum

本文深入探讨了Java枚举类型的定义、使用及遍历方法,包括枚举类型的构造函数、私有变量、toString()方法的重写,以及通过values()方法遍历枚举类型。此外,还介绍了如何使用EnumMap和EnumSet进行枚举类型的集合操作,提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class LightTest {

    // 1.定义枚举类型

    public enum Light {

    // 利用构造函数传参

    RED(1), GREEN(3), YELLOW(2);

    // 定义私有变量

    private int nCode;

    // 构造函数,枚举类型只能为私有

    private Light(int _nCode) {

        this.nCode = _nCode;

    }

    @Override
    public String toString() {

        return String.valueOf(this.nCode);

    }

    }

    /**
     * 
     * @param args
     */

    public static void main(String[] args) {

    // 1.遍历枚举类型

    System.out.println("演示枚举类型的遍历 ......");

    testTraversalEnum();

    // 2.演示EnumMap对象的使用

    System.out.println("演示EnmuMap对象的使用和遍历.....");

    testEnumMap();

    // 3.演示EnmuSet的使用

    System.out.println("演示EnmuSet对象的使用和遍历.....");

    testEnumSet();

    }

    /**
     * 
     * 演示枚举类型的遍历
     */

    private static void testTraversalEnum() {

    Light[] allLight = Light.values();

    for (Light aLight : allLight) {

        System.out.println("当前灯name:" + aLight.name());

        System.out.println("当前灯ordinal:" + aLight.ordinal());

        System.out.println("当前灯:" + aLight);

    }

    }

    /**
     * 
     * 演示EnumMap的使用,EnumMap跟HashMap的使用差不多,只不过key要是枚举类型
     */

    private static void testEnumMap() {

    // 1.演示定义EnumMap对象,EnumMap对象的构造函数需要参数传入,默认是key的类的类型

    EnumMap<Light, String> currEnumMap = new EnumMap<Light, String>(

    Light.class);

    currEnumMap.put(Light.RED, "红灯");

    currEnumMap.put(Light.GREEN, "绿灯");

    currEnumMap.put(Light.YELLOW, "黄灯");

    // 2.遍历对象

    for (Light aLight : Light.values()) {

        System.out.println("[key=" + aLight.name() + ",value="

        + currEnumMap.get(aLight) + "]");

    }

    }

    /**
     * 
     * 演示EnumSet如何使用,EnumSet是一个抽象类,获取一个类型的枚举类型内容<BR/>
     * 
     * 可以使用allOf方法
     */

    private static void testEnumSet() {

    EnumSet<Light> currEnumSet = EnumSet.allOf(Light.class);

    for (Light aLightSetElement : currEnumSet) {

        System.out.println("当前EnumSet中数据为:" + aLightSetElement);

    }

    }

}

执行结果如下:

演示枚举类型的遍历 ......

当前灯name:RED

当前灯ordinal:0

当前灯:1

当前灯name:GREEN

当前灯ordinal:1

当前灯:3

当前灯name:YELLOW

当前灯ordinal:2

当前灯:2

演示EnmuMap对象的使用和遍历.....

[key=RED,value=红灯]

[key=GREEN,value=绿灯]

[key=YELLOW,value=黄灯]

演示EnmuSet对象的使用和遍历.....

当前EnumSet中数据为:1

当前EnumSet中数据为:3

当前EnumSet中数据为:2
### Java 枚举类型的用法与实例 枚举类型(`enum`)是在 Java 5 中引入的一种特殊的数据类型,用于定义一组固定的常量集合。所有的枚举类都隐式继承自 `java.lang.Enum` 类[^1]。 #### 定义简单的枚举 下面是一个基本的枚举定义示例: ```java public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } ``` 可以通过以下方式访问这些枚举值: ```java Day day = Day.MONDAY; System.out.println(day); // 输出:MONDAY ``` #### 使用构造函数和方法扩展枚举功能 可以为枚举添加字段、构造器以及方法来增强其功能性。例如: ```java public enum Planet { MERCURY(3.30E23), VENUS(4.87E24); private final double mass; Planet(double mass) { this.mass = mass; } public double getMass() { return mass; } } Planet planet = Planet.MERCURY; System.out.println("Mercury's mass: " + planet.getMass()); // 输出:Mercury's mass: 3.3E23 ``` #### 枚举中的抽象方法实现 还可以让枚举实现接口或者声明抽象方法并由各个枚举项具体化其实现逻辑: ```java public enum Operation { PLUS { @Override public int apply(int x, int y) { return x + y; } }, MINUS { @Override public int apply(int x, int y) { return x - y; } }; abstract public int apply(int x, int y); } Operation op = Operation.PLUS; int result = op.apply(10, 5); // 结果为 15 System.out.println(result); ``` 由于枚举已经继承了 `java.lang.Enum`,因此它不能再显式地去继承其他父类。 #### 注解的应用场景 在某些情况下可能需要标记某个 API 已过时,在此之前版本中我们通常会使用 `@Deprecated` 这样的注解来进行标注[^2]。对于现代开发环境而言,则推荐配合 Javadoc 提供更详细的说明文档以便开发者理解为何该部分被废弃以及替代方案是什么等内容。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值