当前位置:首页 > Java

java 如何定义enum

2026-03-22 07:42:41Java

定义枚举(Enum)的基本语法

在Java中,枚举是一种特殊的类,用于表示一组固定的常量。定义枚举使用enum关键字,后跟枚举名称和大括号内的枚举常量列表。

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

枚举的属性和方法

枚举可以包含属性和方法,类似于普通类。每个枚举常量可以有自己的属性和行为。

public enum Planet {
    MERCURY(3.303e+23, 2.4397e6),
    VENUS(4.869e+24, 6.0518e6),
    EARTH(5.976e+24, 6.37814e6);

    private final double mass;   // in kilograms
    private final double radius; // in meters

    Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }

    public double getMass() {
        return mass;
    }

    public double getRadius() {
        return radius;
    }
}

枚举的构造函数

枚举可以定义构造函数,但必须是私有的(默认即为私有)。枚举常量在定义时会调用对应的构造函数。

public enum Color {
    RED("#FF0000"),
    GREEN("#00FF00"),
    BLUE("#0000FF");

    private String hexCode;

    private Color(String hexCode) {
        this.hexCode = hexCode;
    }

    public String getHexCode() {
        return hexCode;
    }
}

枚举的抽象方法

枚举可以包含抽象方法,每个枚举常量必须实现该方法。

public enum Operation {
    PLUS {
        public double apply(double x, double y) {
            return x + y;
        }
    },
    MINUS {
        public double apply(double x, double y) {
            return x - y;
        }
    };

    public abstract double apply(double x, double y);
}

枚举的常用方法

枚举提供了一些内置方法,如values()valueOf()

Day[] days = Day.values(); // 返回所有枚举常量
Day monday = Day.valueOf("MONDAY"); // 根据名称获取枚举常量

枚举实现接口

枚举可以实现接口,为所有枚举常量提供统一的行为。

public interface Displayable {
    void display();
}

public enum Status implements Displayable {
    ACTIVE {
        public void display() {
            System.out.println("Active status");
        }
    },
    INACTIVE {
        public void display() {
            System.out.println("Inactive status");
        }
    };
}

枚举的比较

枚举常量可以使用==进行比较,因为每个枚举常量都是单例。

java 如何定义enum

Day today = Day.MONDAY;
if (today == Day.MONDAY) {
    System.out.println("Today is Monday");
}

枚举的序列化

枚举默认是可序列化的,不需要显式实现Serializable接口。枚举的序列化机制保证了反序列化时不会创建新的实例。

标签: 定义java
分享给朋友:

相关文章

如何运行java程序

如何运行java程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

java如何定义一个数组

java如何定义一个数组

定义数组的基本语法 在Java中,数组是固定长度的同类型数据集合。定义数组需要指定数据类型和数组名称,并可以选择直接初始化或稍后分配空间。 // 声明数组但不初始化 数据类型[] 数组名; //…