我有一些UI客户端过滤器(组合框和复选框组),需要在服务器端使用:我想使用枚举来标识过滤器类型,使用其他枚举来标识每个过滤器的选项。
// All UI filters
public enum FilterType {
AGGREGATION("aggregation"),
AREA("area"),
PRODUCTION("production"),
DATA_TYPE("datatype"),
PRODUCER("producer"),
NETWORK("network"),
SOURCE("source");
private String value;
private FilterType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
// FilterType.AGGREGATION filter options
public enum AggregationOptionType {
STANDARD("standard"),
DTR("dtr"),
CO("co");
private String value;
private AggregationOptionType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
我想在
FilterType.AGGREGATION
和AggregationOptionType
之间创建一个硬链接,强制通过FilterType.AGGREGATION.DTR
访问选项。如何将一个枚举嵌套到另一个枚举的值中?是否有其他模式(可能比我更聪明)可以达到同样的结果?编辑:澄清一下,我不需要为外部枚举的每个值分配内部枚举的共同值。我需要为外部枚举的每个值分配一个完全不同的内部枚举。
FilterType
中扩展枚举类型STANDARD_AGGREGATION
、DTR_AGGREGATION
和CO_AGGREGATION
,因为嵌套不可行。否则,您可以创建“普通”对象,可能使用单例设计模式 - 因为枚举默认是单例的。这样,您将获得类型安全性和更多的灵活性。 - SmutjeAggregationOptionType
仍然作为单独的枚举存在:我想将其包含在其FilterType
选项中。 - Marco StramezziAggregationOptionType
只适用于FilterType.AGGREGATION
而不是FilterType.AREA
或其他任何类型? - Smutjeenums
provide unmodifiable behavior, but IFAIU you wantFilterTypes
beeing combined withAggregationTypes
I'd do this when creating a concrete filter Object:new Filter(FilterType.AGGREGATION, AggregationOptionType.DTR);
- Timothy Truckle