Java 声明类型为system的映射字段
在Java中,假设我有一个表示http头的类:Java 声明类型为system的映射字段,java,Java,在Java中,假设我有一个表示http头的类: public class Headers { String 'x-requested-by' = "foo"; String 'content-type' = "application/json" } 由于字段名使用非标准变量名(连字符),因此通常使用更动态的映射,如下所示: Map<String, String> map = new HashMap<String, String>(
public class Headers {
String 'x-requested-by' = "foo";
String 'content-type' = "application/json"
}
由于字段名使用非标准变量名(连字符),因此通常使用更动态的映射,如下所示:
Map<String, String> map = new HashMap<String, String>();
Map Map=newhashmap();
但是我的问题是-有没有一种方法可以声明哪些字段将静态地存在于其中,而不是仅在运行时存在?没有。只有一件事可以做,那就是在初始化后使用默认值初始化a
Map
public class Header {
public static final String X_REQUESTED_BY = "x-requested-by";
public static final String CONTENT_TYPE = "content-type";
private final Map<String, String> map = new HashMap<String, String>();
{
map.put(X_REQUESTED_BY, "foo");
map.put(CONTENT_TYPE, "application/json");
}
}
公共类标题{
公共静态最终字符串X_REQUESTED_BY=“X-REQUESTED-BY”;
公共静态最终字符串CONTENT\u TYPE=“CONTENT TYPE”;
私有最终映射=新HashMap();
{
地图放置(X由“foo”请求);
put(CONTENT_类型,“application/json”);
}
}
否。您只能在初始化后使用默认值初始化一个映射
public class Header {
public static final String X_REQUESTED_BY = "x-requested-by";
public static final String CONTENT_TYPE = "content-type";
private final Map<String, String> map = new HashMap<String, String>();
{
map.put(X_REQUESTED_BY, "foo");
map.put(CONTENT_TYPE, "application/json");
}
}
公共类标题{
公共静态最终字符串X_REQUESTED_BY=“X-REQUESTED-BY”;
公共静态最终字符串CONTENT\u TYPE=“CONTENT TYPE”;
私有最终映射=新HashMap();
{
地图放置(X由“foo”请求);
put(CONTENT_类型,“application/json”);
}
}
您可以使用枚举映射,它只接受指定枚举类型的键,而枚举本身将静态限制选项
enum Headers {
X_REQUESTED_BY("x-requested-by"), CONTENT_TYPE("content-type");
private String headerName;
private Headers(String n) {
this.headerName = n;
}
public String getHeaderName() {
return headerName;
}
}
并使用枚举映射存储值:
Map<Headers, String> headerValues = new EnumMap<>(Headers.class);
Map headerValues=新的EnumMap(Headers.class);
然后可以使用诸如addHeader(Headers h)
之类的方法扩展API,这样可以在保持类型安全的同时静态限制选项。您可以使用枚举映射,该映射只接受指定枚举类型的键,而枚举本身将静态限制选项
enum Headers {
X_REQUESTED_BY("x-requested-by"), CONTENT_TYPE("content-type");
private String headerName;
private Headers(String n) {
this.headerName = n;
}
public String getHeaderName() {
return headerName;
}
}
并使用枚举映射存储值:
Map<Headers, String> headerValues = new EnumMap<>(Headers.class);
Map headerValues=新的EnumMap(Headers.class);
然后可以使用addHeader(Headers h)
等方法扩展API,这样就可以在保持类型安全的同时静态限制选项