2
function checkValue(value) {
    if (value === null || value === undefined || value === '') {
        return '-';
    } else {
        switch (value) {
        case true:
            return 'Yes';
            break;
        case false:
            return 'No';
            break;
        default:
            return value;
            break;
        }
    }
}

我知道按字符串切换大小写仅适用于 > 1.7。无论如何我可以在不使用传统的 java 中转换这段代码if/else。这段代码是用JavaScript.

4

2 回答 2

6

改用枚举,因为不支持 <1.7 的字符串开关

    private enum MyEnum {
        a, b, c, d;
    }

    String val; // input
    MyEnum mye = MyEnum.valueOf(val);

    switch (mye) {
        case a:
            return something;
        case carrot:
            return something;
        ..
    }

PS:伪代码。IDE 不在手上。对不起。

于 2013-04-23T11:28:29.730 回答
1

您可以像这样使用 Enum:

enum MyEnum {

    A1, A2, A3;

}

String val = "myVal"; // your input

MyEnum enumVal;
try {
    enumVal = MyEnum(val);
} catch (IllegalArgumentException iae) {
    enumVal = null;
}

switch (enumVal) {

    case A1: 
        doSomething();
        break;

    case A2: 
        doOtherStuff();
        break;

    default: 
        doDefault();
        break;

}

如果你认为 try 块太难看,你可以使用apache commons lang的EnumUtils,它会为你做这些事情,你只需要改变这个:

MyEnum enumVal;
try {
    enumVal = MyEnum(val);
} catch (IllegalArgumentException iae) {
    enumVal = null;
}

有了这个:

MyEnum enumVal = EnumUtils.getEnum(MyEnum.class, val);

编辑

对于您只想过滤不是字符串的布尔值的情况,您可以执行以下操作:

Object input = "MyString";

if (input == Boolean.TRUE) {
    return "Yes";
} else if (input == Boolean.FALSE) {
    return "No";
} else {
    return input;
}

如果它们是字符串,则需要比较字符串本身,例如:

if ("true".equals(input)) {
    return "Yes";
} else if ("false".equals(input)) {
    return "No";
} else {
    return input;
}
于 2013-04-23T11:43:49.617 回答