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

如何创建层级枚举类?以汽车品牌-车型-配置为例

三级层级枚举类实现方案

核心思路

通过从下到上的枚举定义逻辑:先定义最底层的Trim枚举,再让中层Model枚举关联对应配置集合,顶层Car枚举关联对应车型集合。利用枚举构造函数固化层级关系,同时提供方法获取下一级枚举列表,保证层级关联的强约束。

代码实现(Java示例)

1. 定义最底层的Trim枚举

public enum Trim {
    EX, HYBRID, SPORT
}

2. 定义关联Trim的Model枚举

每个车型枚举实例在构造时传入对应的配置列表,并提供获取配置的方法:

import java.util.List;

public enum Model {
    CIVIC(List.of(Trim.EX, Trim.HYBRID)),
    CAMRY(List.of(Trim.SPORT));

    private final List<Trim> trims;

    Model(List<Trim> trims) {
        this.trims = trims;
    }

    public List<Trim> getTrims() {
        return trims;
    }
}

3. 定义关联Model的Car枚举

每个品牌枚举实例在构造时传入对应的车型列表,并提供获取车型的方法:

import java.util.List;

public enum Car {
    HONDA(List.of(Model.CIVIC)),
    TOYOTA(List.of(Model.CAMRY));

    private final List<Model> models;

    Car(List<Model> models) {
        this.models = models;
    }

    public List<Model> getModels() {
        return models;
    }
}

使用示例

通过层级调用可完整遍历整个结构:

public class Main {
    public static void main(String[] args) {
        // 遍历本田的所有车型及配置
        for (Model model : Car.HONDA.getModels()) {
            System.out.println("本田车型: " + model.name());
            for (Trim trim : model.getTrims()) {
                System.out.println("  配置: " + trim.name());
            }
        }

        // 遍历丰田的所有车型及配置
        for (Model model : Car.TOYOTA.getModels()) {
            System.out.println("丰田车型: " + model.name());
            for (Trim trim : model.getTrims()) {
                System.out.println("  配置: " + trim.name());
            }
        }
    }
}

额外说明

  • 该实现保证了层级的强约束,所有关联关系在枚举初始化时固化,避免出现品牌、车型、配置的非法组合
  • 若需要双向关联(比如通过车型反查所属品牌),可在Model枚举中添加Car类型属性,构造时传入对应品牌,并在Car枚举中验证关联一致性
  • 枚举本身不可变,若需动态调整层级关系,建议改用类+静态常量的方式实现,但会失去枚举的类型安全特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 02:13:11