【发布时间】:2023-03-07 16:11:01
【问题描述】:
嗯.. 似乎 Java 中的枚举类比它们的 C 或 C++ 对应物更通用,但是对于这个特定的代码结构,我试图设备它们的对象性质只是给我带来麻烦。
我所拥有的是这样的:
public static enum ServerResponse{
SIGN_UP_SUCESS(0),
INTERNAL_SERVER_ERROR(1),
EMAIL_ALREADY_REGISTERED(2),
SIGNIN_FAILED(3),
WAITING_CONFIRMATION(4),
SIGNIN_SUCESS(5),
BLOCKED_ACCOUNT(6),
INACTIVE_ACCOUNT(7);
private final int numcode;
ServerResponse(int num){
numcode = num;
}
final int numCode(){ return numcode;}
}
您现在看到问题出现了,因为服务器给了我一个数字响应,我无法直接与枚举类进行比较。然后我的想法是创建 numCode() 方法,该方法将返回实例化枚举的整数属性。我试图做这样的事情:
int SERVER_RESPONSE = ServerInterface.sendRequest();
switch(SERVER_RESPONSE){
ServerInterface.ServerResponse.BLOCKED_ACCOUNT.numCode():
//Do something
ServerInterface.ServerResponse.INTERNAL_SERVER_ERROR:
}
但您可以想象,上述方法均未奏效。第一个案例比较抱怨“案例表达式必须是常量表达式”,而第二个类型只是给我一个类型不匹配的错误。
那么我该怎么做呢?好吧,现在我正在做这样的事情:
for(ServerResponse response : ServerResponse.values()){
if(response.numCode() == SERVER_RESPONSE){
return response;
}
}
但它很难看.. 我想使用 switch 语句,这就是枚举类型的全部目的,好吗?那么请问,我在这里缺少什么?
谢谢
纳尔逊
【问题讨论】:
-
看看stackoverflow.com/questions/1080904/…它是一个带有字符串值的枚举,但很容易转换为一个int。
标签: java enums switch-statement