在这种情况下使用适合的嵌套枚举?

Gee*_*eek 8 java enums design-patterns

我有一个要求支持一些ChartTypes.这些图表类型中的每一种都可以支持多种ChartSubTypes.例如AreaChart类型可以有PercentArea,StackedArea等我想用一个枚举两者的ChartTypesSubTypes,然后维持一个地图的地方,这将是这样的:

Map<ChartType,List<ChartSubTypes> mapTypes;
Run Code Online (Sandbox Code Playgroud)

我可以在这里以某种方式使用嵌套的枚举模式吗?如果是,那怎么样?

Ars*_*yan 5

如果该定义是常量(即您知道哪些子类型可以包含每种类型)您可以在此使用枚举定义,如下所示

enum ChartSubTypes{
    PercentArea, StackedArea, ChartSubType3;
}

enum ChartTypes{
    AreaChart(ChartSubTypes.PercentArea, ChartSubTypes.StackedArea), 
    CharType2(ChartSubTypes.PercentArea, ChartSubTypes.ChartSubType3);

    private List<ChartSubTypes> subTypes = new ArrayList<ChartSubTypes>();

    private ChartTypes(ChartSubTypes ...chartSubTypes){
        for(ChartSubTypes subType : chartSubTypes){
            subTypes.add(subType);
        }
    }

    public List<ChartSubTypes> getSubTypes(){
        return Collections.unmodifiableList(subTypes);
    }
   }
Run Code Online (Sandbox Code Playgroud)