folgt, können Sie die Chart-Untertypen in den Diagrammtyp hinzufügen, wie also:
public enum ChartType {
AreaChart(SubChartType.PercentArea, SubChartType.StackedArea),
AnotherChart(SubChartType.PercentArea);
private List<SubChartType> subChartTypes = new ArrayList<>();
ChartType(SubChartType... subChartTypes) {
Collections.addAll(this.subChartTypes, subChartTypes);
}
public List<SubChartType> getSubChartTypes() {
return this.subChartTypes;
}
public static Map<ChartType,List<SubChartType>> getMapTypes() {
HashMap<ChartType,List<SubChartType>> mapTypes = new HashMap<>();
for (ChartType chartType : values()) {
mapTypes.put(chartType, chartType.getSubChartTypes());
}
return mapTypes;
}
}
Um die gewünschte Karte zu erhalten, rufen Sie einfach ChartType.getMapTypes();
.
Wenn die Anforderung ist, dass jeder ChartType einen oder mehrere SubChartTypes haben sollte, benötigen Sie diesen Konstruktor, um diese Anforderung zu erzwingen.
ChartType(SubChartType requiredSubType, SubChartType... subChartTypes) {
this.subChartTypes.add(requiredSubType);
Collections.addAll(this.subChartTypes, subChartTypes);
}
Varargs können keine Argumente haben.
'AreaChart',' PercentArea' etc., sind auch enums? – Mordechai
@MouseEvent ja sie sind auch Konstanten – Geek
Wäre es nicht sinnvoller, sie als Klassen zu modellieren und Vererbung zu verwenden? Vielleicht fügen Sie später weitere Diagramme hinzu, die Sie jetzt nicht kennen? – keuleJ