Java Enum 变量定义

概述

在Java中,Enum(枚举)是一种特殊的数据类型,它允许我们定义一个有限的、预定义的一组值。通过使用Enum,我们可以更好地组织和管理代码,使代码更加可读、可维护。本文将介绍Java Enum的定义方式,并通过代码示例详细讲解。

Enum 变量定义

在Java中,我们可以使用关键字enum来定义一个Enum类型。以下是定义一个简单的Enum的示例:

public enum Weekday {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}

上面的代码定义了一个名为Weekday的Enum类型,其中包含了一周的所有工作日和周末。

在定义Enum时,每个Enum值都是一个常量对象,它们默认是按照声明的顺序从0开始进行编号的。在上面的示例中,MONDAY是第一个Enum值,它的编号为0,TUESDAY是第二个Enum值,它的编号为1,以此类推。

我们可以通过Enum值的名称来引用它们,就像引用普通的静态常量一样。例如,我们可以使用Weekday.MONDAY来引用MONDAY这个Enum值。

Enum类型的变量只能取Enum值中的一个,不能取其他值。例如,我们不能将一个字符串赋值给一个Enum类型的变量,这样会导致编译错误。

Enum 值的属性和方法

在Enum中,我们可以为每个Enum值定义属性和方法。以下是一个带有属性和方法的Enum的示例:

public enum Weekday {
    MONDAY("星期一", 1),
    TUESDAY("星期二", 2),
    WEDNESDAY("星期三", 3),
    THURSDAY("星期四", 4),
    FRIDAY("星期五", 5),
    SATURDAY("星期六", 6),
    SUNDAY("星期日", 7);

    private String name;
    private int value;

    Weekday(String name, int value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public int getValue() {
        return value;
    }

    @Override
    public String toString() {
        return name;
    }
}

上面的代码定义了一个具有namevalue属性以及getName()getValue()方法的Enum类型。每个Enum值都有自己独立的属性和方法。

在Enum类型中,我们可以像调用普通对象的方法一样调用Enum值的方法。例如,我们可以使用Weekday.MONDAY.getName()来获取MONDAY的名称。

Enum 的使用示例

下面我们通过一个例子来演示如何在实际中使用Enum。

假设我们正在开发一个汽车租赁系统,我们需要定义汽车的类型。我们可以使用Enum来定义汽车类型,并为每个类型指定名称和日租金。以下是一个示例:

public enum CarType {
    SEDAN("轿车", 200),
    SUV("SUV", 300),
    VAN("面包车", 400);

    private String name;
    private int dailyRent;

    CarType(String name, int dailyRent) {
        this.name = name;
        this.dailyRent = dailyRent;
    }

    public String getName() {
        return name;
    }

    public int getDailyRent() {
        return dailyRent;
    }
}

在上面的代码中,我们定义了三种汽车类型:SEDAN(轿车),SUV(SUV),VAN(面包车),并为每种类型指定了名称和日租金。

在我们的汽车租赁系统中,我们可以使用CarType来指定租赁的汽车类型。例如,我们可以定义一个Car类,其中有一个CarType类型的属性:

public class Car {
    private String brand;
    private CarType type;

    public Car(String brand, CarType type) {
        this.brand = brand;
        this.type = type;
    }

    public String getBrand() {
        return brand;
    }

    public CarType getType() {
        return type;
    }
}

在上面的代码中,我们定义了一个`Car