Java 声明类型为system的映射字段

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>(

在Java中,假设我有一个表示http头的类:

 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,这样就可以在保持类型安全的同时静态限制选项