如何在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
相关产品推荐
相关产品推荐

