java:S1067 - 减少表达式中使用的条件运算符的数量 (5)(最多允许 3 个)

java:S1067 - Reduce the number of conditional operators (5) used in the expression (maximum allowed 3)

如何减少条件运算符的数量? 声纳显示主要问题,例如减少表达式中使用的条件运算符 (5) 的数量(最多允许 3 个),但所有条件都必须保留在此块中:

private String processfromOrigin(Object value) {
    if ((value instanceof A) || (value instanceof B)
            || (value instanceof C) || (value instanceof D)
            || (value instanceof E)
            || (value instanceof F)) {
        return ((baseDto) processo).getProcess();
    } else if (value instanceof G) {
        return ((G) value ).getProcess();
    } else if (value instanceof H) {
        return ((H) value ).getProcess();
    } else {            
        return (String) value ;
    }
}

您可以使用如下代码来简化 if 块中的第一个条件:

import static java.util.Stream.of;
boolean checkABCDEF = of(A.class, B.class, C.class, D.class, E.class, F.class).
                      anyMatch(aClass -> aClass.isInstance(value))

的,可以封装在本地方法中:

    private boolean isABCDEF(Object x) {
        return Stream.of(A.class, B.class, C.class, D.class, E.class, F.class).
                      anyMatch(aClass -> aClass.isInstance(x));
    }