首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java中的键>值成对数组

Java中的键>值成对数组
EN

Stack Overflow用户
提问于 2016-08-19 07:40:30
回答 2查看 93关注 0票数 0

我在我的Go程序中有一个类似的变量,并试图像在Java中那样做;

代码语言:javascript
复制
var (
   STATUS = map[int]string{
      200: "OK",
      201: "Created",
      202: "Accepted",
      304: "Not Modified",
      400: "Bad Request",
      401: "Unauthorized",
      403: "Forbidden",
      404: "Not Found",
      405: "Resource Not Allowed",
      406: "Not Acceptable",
      409: "Conflict",
      412: "Precondition Failed",
      415: "Bad Content Type",
      416: "Requested Range Not Satisfiable",
      417: "Expectation Failed",
      500: "Internal Server Error",
   }
)

我尝试使用HashMap或其他数组内容,但不能使用,因为它将是Response类的属性,必须在开始时定义,如;

代码语言:javascript
复制
package http;

class Response {
    // here define filling it e.g STATUS = new Array(200, "OK", ...) etc..
    ... STATUS ... 
}

是的,我可以使用HashMap在构造函数中填充它,但是我不能像这样得到例如"OK“:String status = STATUS[200]

EN

Stack Overflow用户

发布于 2016-08-19 07:52:38

您可以使用静态类初始化器并使用HashMap,就像您尝试过的那样。

代码语言:javascript
复制
class Response
{
    public static final Map<Integer,String> STATUS;

    static{
        STATUS=new HashMap<>();
        STATUS.put(200,"OK");
        STATUS.put(201,"Created");
        // ...
    }
}

示例用法:

代码语言:javascript
复制
Response.STATUS.get(200); // will return "OK"

如果您愿意,您甚至可以使用Collection.unmodifiableMap()使其不可修改。这就是我要做的。所以上面的静态类初始化器现在看起来像这样:

代码语言:javascript
复制
static{
    HashMap<Integer,String> statusValues=new HashMap<>();
    statusValues.put(200,"OK");
    statusValues.put(201,"Created");
    // ...

    STATUS=Collections.unmodifiableMap(statusValues);
}
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39029088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档