java双枚举映射,java – 映射两个相关的枚举?

我有两个相关的枚举:

Enum1:

public enum HttpStatusCode {

ACCEPTED(202),

OK(200),

CREATED(201),

BAD_REQUEST(400),

NOT_FOUND(404),

METHOD_NOT_ALLOWED(405),

REQUEST_TIMEOUT (408),

FORBIDDEN(403),

CONFLICT(409),

INTERNAL_SERVER_ERROR(500),

NOT_IMPLEMENTED(501);

private int httpStatusCode;

private HttpStatusCode(int name) {

this.httpStatusCode = name;

}

public int getHttpStatusCode() {

return httpStatusCode;

}

}

Enum2:

public enum ProtocolStatusCode {

ACCEPTED(1000),

OK(2000),

CREATED(2001),

BAD_REQUEST(4000)

private int protocolStatusCode;

private ProtocolStatusCode(int protocolStatusCode) {

this.protocolStatusCode = protocolStatusCode;

}

public int getStatusCode() {

return protocolStatusCode;

}

}

例如,这两个枚举值在映射中相关

协议状态代码2000(OK)具有200(OK)映射.

因此,在我的代码中,我将获得ProtocolStatusCode(2000)并且对应于我将需要HttpStatusCode(200).

我正在考虑将ProtocolStatusCode枚举维护为

ACCEPTED(1000, 202),

OK(2000, 200)

因此,当我得到2000时,我将反向查找枚举以获得OK,然后调用getter以获得与2000相关的第二个值(200).

有更好的方法??

解决方法:

你可以在第二个枚举中添加一个字段,这是第一个枚举的类型.然后,您不必搜索第一个枚举数组以查找正确的对象.就像是:

enum A{

A_FOO(1),

A_BAR(2);

private int code;

private A(int code) {

this.code = code;

}

public int getCode() {

return code;

}

}

enum B{

B_FOO(1000,A_FOO),

B_BAR(2000,A_BAR);

private int code;

private A status;

private B(int code, A status) {

this.code = code;

this.status = status;

}

public int getCode() {

return code;

}

public A getStatus() {

return status;

}

}

因此,如果B enum中的代码是唯一的,您可以实现像getBbyCode()这样的方法,然后你也有B.A.

标签:java,enums

来源: https://codeday.me/bug/20190623/1272314.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值