【发布时间】:2016-02-25 00:08:31
【问题描述】:
我是 Java 新手,正在为标题编写一个 Enum 到 String Map。
public class Header {
// When adding HeaderType make sure it is consistent with the header name map
public enum HeaderType {
MARKER,
WIDTH,
......
};
private String name;
private String value;
private HeaderType headerType;
// Create an immutable map for header enum to header names
private static final Map<HeaderType, String> headerNameMap;
static {
Map<HeaderType, String> headerNameMapTemp = new HashMap<HeaderType, String>();
headerNameMapTemp.put(HeaderType.MARKER, "MA");
headerNameMapTemp.put(HeaderType.WIDTH, "WI");
headerNameMap = Collections.unmodifiableMap(headerNameMapTemp);
}
public Header(HeaderType headerType, String value) {
this.headerType = headerType;
this.name = Header.getHeaderName(this.headerType);
this.value = value;
}
private static String getHeaderName(HeaderType headerType) {
return headerName.get(headerType);
}
在上面的代码中,我使用 HeaderType 枚举并使用不可变的 HashMap 将枚举转换为标头名称。如您所见,添加另一种标头类型也涉及将其添加到地图中。所以这个用户应该确保它被添加到两个地方以避免以后出现任何混乱。他们有这个功能的任何干净的替代品吗?
【问题讨论】: