Java 将2个值签入枚举
我有以下Java枚举结构:Java 将2个值签入枚举,java,Java,我有以下Java枚举结构: public enum ResponseCodes { ONE("000.200.100", 100, "successfully created checkout"), TWO("000.200.101", 101, "failed created checkout"); ResponseCodes(String s, int i, String s1) {
public enum ResponseCodes {
ONE("000.200.100", 100, "successfully created checkout"),
TWO("000.200.101", 101, "failed created checkout");
ResponseCodes(String s, int i, String s1) {
}
}
当我收到“000.200.100”
和“成功创建的签出”
时,我希望获得值100
。如何实施该检查
public enum ResponseCodes {
ONE("000.200.100", 100, "successfully created checkout"),
TWO("000.200.101", 101, "failed created checkout");
private String version;
private String text;
private int code;
ResponseCodes(String s, int i, String s1) {
version = s;
text = s1;
code = i;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
例如:
private int testMethod(){
ResponseCodes example = ResponseCodes.ONE;
if ( example.getVersion().equals( "000.200.100" )
&& example.getText().equals( "successfully created checkout" ) ) {
return example.getCode();
}
return 0;
}
或获取相关的枚举:
private ResponseCodes getResponseCode(){
for ( ResponseCodes c : ResponseCodes.values() ) {
if ( c.getVersion().equals( "000.200.100" )
&& c.getText().equals( "successfully created checkout" ) ) {
return c;
}
}
return ResponseCodes.ONE; // return a default
}
或者采用不同的方法:
// change
ONE("000.200.100", 100, "successfully created checkout");
// into
SUCCESSFULLY_CREATED_CHECKOUT_000_200_100(100); // and delete the String fields
//Which makes it possible to pull the int value in this way:
private int testMethod2() {
String text = "successfully created checkout";
String numbers = "000.200.100";
String enumName = (text + " " + numbers).replaceAll("( )|(\\.)", "_" ).toUpperCase();
return ResponseCodes.valueOf(enumName).getCode();
}
当您从何处收到它们时?远程API响应。如何从这两个值获取枚举实例?嗯<代码>响应代码。一个看起来您正在选择一个值。我需要搜索枚举。是的,添加了一个您想要的示例。您不必返回枚举,只需返回其int字段。还有一个问题:是否有更好的结构/设计来实现此功能?如果您不介意非常长的名称,例如
成功创建\u checkout\u 000\u 200\u 100
,您可以更改枚举名称并按如下方式提取int值:ResponseCodes.valueOf(“已成功创建_checkout _000 _200 _100”).getCode()
我认为这不是一个好主意。请参见此处:对于每种类型的响应,我们都有一个固定值。还有一个问题:我是否可以在枚举中返回一些默认值,即不匹配?