Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将2个值签入枚举_Java - Fatal编程技术网

Java 将2个值签入枚举

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) {

我有以下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) {
    }
}
当我收到
“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()
我认为这不是一个好主意。请参见此处:对于每种类型的响应,我们都有一个固定值。还有一个问题:我是否可以在枚举中返回一些默认值,即不匹配?