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

如何用Java合理实现对应UML图的Material类以支持Material.oak调用?

你的实现存在两个核心问题:

  1. 你将材质枚举定义为了Material普通类的内部静态枚举,要访问枚举值必须写Material.material.oak,无法满足作业要求的Material.oak调用方式
  2. 材质成本用独立数组存储,和枚举值分离,后续维护很容易出现下标对应错误的问题

正确的实现方式是直接将Material定义为枚举类,把成本作为枚举实例的内置属性:

public enum Material {
    // 对应橡木、山毛榉、白蜡木,依次传入对应成本
    oak(1),
    beech(2),
    ash(3);

    // 存储当前材质的成本,用final避免被修改
    private final int cost;

    // 枚举类构造方法默认访问权限为private
    Material(int cost) {
        this.cost = cost;
    }

    // 提供公共方法获取材质成本
    public int getCost() {
        return cost;
    }
}

修改后你可以直接通过Material.oak获取橡木对应的枚举实例,完全符合Table(Material.oak)的用法,同时每个材质的成本和枚举值绑定,逻辑更合理,也避免了数组下标匹配错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:36:03