当前位置:首页 > 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;
    }
}

枚举的构造函数

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

java 如何定义enum

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()

java 如何定义enum

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");
        }
    };
}

枚举的比较

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

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

枚举的序列化

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

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

相关文章

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

react如何定义进程

react如何定义进程

在 React 中,"进程"通常指的是组件的生命周期或状态管理流程,而不是操作系统级别的进程。以下是 React 中定义和管理组件流程的常见方法: 使用生命周期方法 类组件可以通过生命周期方法(如…

java如何生成随机数

java如何生成随机数

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

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…

react如何定义全局方法

react如何定义全局方法

定义全局方法的方式 在React中定义全局方法可以通过多种方式实现,具体取决于项目的架构和需求。以下是几种常见的方法: 使用Context API 通过React的Context API可以创建一个…