You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java对象类中实现Enum?Pizza类构建需求咨询

Hey Ellen! 看起来你第一次在类里用Enum,这绝对是个好选择——尤其是像披萨尺寸这种有固定可选值的场景,Enum比字符串或者数字靠谱多了,能避免很多非法输入的问题。我帮你写了一个完整的Pizza类实现,包含你要的所有功能,咱们一步步看:

1. 先定义披萨尺寸的Enum

首先咱们用Enum来限定披萨的可选尺寸,这样用户只能从预设的选项里选,不会出现拼写错误或者奇怪的自定义值:

// 定义披萨尺寸枚举,你可以根据需要增减选项
public enum PizzaSize {
    SMALL, MEDIUM, LARGE, EXTRA_LARGE
}
2. 实现Pizza类

接下来是核心的Pizza类,包含无参默认构造、尺寸的get/set方法、芝士数量的设置与获取,还加了简单的合法性校验,避免不合理的输入:

public class Pizza {
    // 用Enum类型来存储披萨尺寸
    private PizzaSize size;
    // 存储芝士数量
    private int cheeseCount;

    // 无参默认构造方法,初始化默认值:小尺寸,1份芝士
    public Pizza() {
        this.size = PizzaSize.SMALL;
        this.cheeseCount = 1;
    }

    // 获取当前披萨尺寸
    public PizzaSize getSize() {
        return size;
    }

    // 设置披萨尺寸,加了非空校验防止传入null
    public void setSize(PizzaSize size) {
        if (size != null) {
            this.size = size;
        } else {
            throw new IllegalArgumentException("披萨尺寸不能为null哦");
        }
    }

    // 获取芝士数量
    public int getCheeseCount() {
        return cheeseCount;
    }

    // 设置芝士数量,确保数量不会是负数
    public void setCheeseCount(int cheeseCount) {
        if (cheeseCount >= 0) {
            this.cheeseCount = cheeseCount;
        } else {
            throw new IllegalArgumentException("芝士数量不能是负数呀");
        }
    }

    // 可选:重写toString方法,方便快速查看披萨的信息
    @Override
    public String toString() {
        return "披萨详情:尺寸=" + size + ",芝士份数=" + cheeseCount;
    }
}
3. 测试一下怎么用

你可以用下面的代码来测试这个Pizza类的功能:

public class PizzaDemo {
    public static void main(String[] args) {
        // 用无参构造创建默认披萨
        Pizza myPizza = new Pizza();
        System.out.println(myPizza); // 输出默认的小尺寸+1份芝士

        // 修改披萨尺寸为大份
        myPizza.setSize(PizzaSize.LARGE);
        // 设置芝士数量为3份
        myPizza.setCheeseCount(3);
        System.out.println(myPizza); // 输出大尺寸+3份芝士
    }
}
关键点说明
  • 用Enum定义尺寸,保证了输入的合法性,不会出现比如"XXL"或者拼写错误的情况
  • 无参构造给对象设置了合理的默认值,用户创建Pizza对象时不用立刻传参数
  • setter方法里的校验逻辑,能避免非法输入破坏对象的状态
  • 重写的toString方法可以让你快速打印披萨的信息,方便调试

内容的提问来源于stack exchange,提问作者EllenS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:02:15