Sì, è possibile aggiungere i tipi di grafici secondari per il tipo di grafico come quindi:
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;
}
}
Per ottenere la mappa desiderata, chiamare semplicemente ChartType.getMapTypes();
.
Se il requisito è che ogni ChartType debba avere uno o più SottocartTypes, è necessario questo costruttore per far rispettare tale requisito.
ChartType(SubChartType requiredSubType, SubChartType... subChartTypes) {
this.subChartTypes.add(requiredSubType);
Collections.addAll(this.subChartTypes, subChartTypes);
}
Varargs può avere argomenti zero.
fonte
2013-03-08 07:23:59
'AreaChart',' PercentArea' ecc., Sono anche enumerazioni? – Mordechai
@MouseEvent si sono anche costanti – Geek
Non avrebbe più senso modellarle come classi e usare l'ereditarietà? Forse stai aggiungendo più grafici in seguito che non conosci adesso? – keuleJ