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

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

问题描述:

我需要支持一些 ChartTypes 。这些图表类型中的每一种都可以支持许多 ChartSubTypes 。例如 AreaChart 类型可以具有 PercentArea StackedArea 等我正在考虑在 ChartTypes SubTypes 中使用枚举,然后在某处保持一个地图,如下所示:

I have a requirement to support a number of ChartTypes. Each of these chart types can support a number of ChartSubTypes. For example AreaChart type can have PercentArea, StackedArea etc. I am thinking of using an Enum both for ChartTypes and SubTypes and then maintain a map somewhere which will be something like :

Map<ChartType,List<ChartSubTypes> mapTypes;

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

Can I somehow use a nested enum pattern here? If yes then how?

如果该定义是不变的(即您知道哪些子类型可以包含每种类型)可以使用这里的枚举定义如下

If that definition is constant (i.e. You know which sub types can contain every type) You can use here enum definitions as follows

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);
    }
   }