我有很多类,每个类都包含一个具有完全不同搜索键的映射。每个地图平均有4项=>,平均4项搜索键。
示例:
class A
{
private final static Map<String, String> properties;
static
{
Map<String, String> tmp = new HashMap<>();
tmp.put("NearestNeighbour", "INTER_NEAREST");
tmp.put("Bilinear", "INTER_LINEAR");
tmp.put("Bicubic4x4", "INTER_CUBIC");
properties = Collections.unmodifiableMap(tmp);
}
private enum InterpolationMode
{
NN("NearestNeighbour"),
Bilinear("Bilinear"),
Bicubic("Bicubic");
private String mode;
InterpolationMode(String mode) {
this.mode = mode;
}
public String getMode(){
return mode;
}
}
}在这个类中,我的map键是NearestNeighbour, Bilinear, Bicubic4x4,所以我创建了一个私有枚举,并从映射中检索值,如下面的properties.get(InterpolationMode.Bilinear.getMode());
问题是,我有大约20个类,每个类都有自己的映射,有不同的键(它们没有关联)。全局包枚举对我来说没有任何意义,因为这些搜索键在任何方面都没有关联。在每堂课上创建这样的私人枚举是个好主意吗?还是有更好的方法来做到这一点,而且根本不使用枚举?
发布于 2018-03-21 15:05:27
为此目的使用枚举是完全可以的。您可以考虑的是使用枚举作为键(而不是字符串),并使用EnumMap代替HashMap。
Map<InterpolationMode, String> tmp = new EnumMap<>(InterpolationMode.class);
tmp.put(InterpolationMode.NN, "INTER_NEAREST");
tmp.put(InterpolationMode.Bilinear, "INTER_LINEAR");
tmp.put(InterpolationMode.Bicubic, "INTER_CUBIC");EnumMap的优点是它更紧凑、更高效。
发布于 2018-03-21 15:05:31
您创建许多类只是为了保存不同的数据映射吗?如果是这样,最好只创建一个类,然后从该类创建多个对象。
只要枚举具有实际意义(例如性别、银行账户类型),就可以使用全局枚举。
https://stackoverflow.com/questions/49409744
复制相似问题