我的 Go 东西中有一个类似的变量,并尝试像在 Java 中一样执行它;
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
类的属性,并且必须在开头定义,例如;
package http;
class Response {
// here define filling it e.g STATUS = new Array(200, "OK", ...) etc..
... STATUS ...
}
是的,我可以使用 HashMap
将其填充到构造函数中,但随后我无法得到“OK”,如下所示:String status = STATUS[200]
。
最佳答案
枚举
最适合:
public enum Response {
OK(200, "OK"),
Created(201, "Created"),
NotFound(404, "Not found");
private final int _code;
private final String _message;
Response(int code, String message) {
_code = code;
_message = message;
}
public int code() {
return _code;
}
public String message() {
return _message;
}
}
枚举的另一个好处是您可以在代码中使用易于理解的常量名称进行操作,例如Response.NotFound
而不是数字代码。如果您确实需要通过代码获取值,只需添加一个静态方法来解析枚举实例即可。
关于java - Java中的键>值配对数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39029088/