有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java简化此代码:ifelse

我有这段代码,我想知道是否有办法简化重复的if语句:

convertedImgStr = getConvertedImage();

if (convertedImgStr.contains("::::::::::") || convertedImgStr.contains("null")) {
    if (convertedImgStr.contains("::::::::::")) {
        VIEW.updateStatus(STS_WARNING_IMG);
        LOG.warn("Converter might have failed to transform the image correctly");
    }

    if (convertedImgStr.contains("null")) {
        VIEW.updateStatus(STS_FAILURE_IMG);
        LOG.warn("Converter failed to transform the image");
    }
} else {
    VIEW.updateStatus(STS_SUCCESS_IMG);
}

共 (4) 个答案

  1. # 1 楼答案

    convertedImgStr = getConvertedImage();
    switch(convertedImgStr) {
    case convertedImgStr.contains("::::::::::") : {
    VIEW.updateStatus(STS_WARNING_IMG);
    LOG.warn("Converter might have failed to transform the image correctly");   break; } ,
    case "null": {
    VIEW.updateStatus(STS_FAILURE_IMG);
            LOG.warn("Converter failed to transform the image"); break;
    },
    default:{
     VIEW.updateStatus(STS_SUCCESS_IMG); break;
    }    }
    
  2. # 2 楼答案

    你不需要说,else if是你的朋友

    convertedImgStr = getConvertedImage();
    
    if (convertedImgStr.contains("::::::::::")) { 
        VIEW.updateStatus(STS_WARNING_IMG);
        LOG.warn("Converter might have failed to transform the image correctly");
    } else if(convertedImgStr.contains("null")) {
        VIEW.updateStatus(STS_FAILURE_IMG);
        LOG.warn("Converter failed to transform the image");
    } else {
        VIEW.updateStatus(STS_SUCCESS_IMG);
    }
    

    出于兴趣,您是在寻找null作为字符串文字,还是在检查字符串是否为null?如果是后者,那么你走错了方向,你需要这个:

    } else if(convertedImgStr == null) {
    
  3. # 3 楼答案

    尝试下面更简单的代码

    if (convertedImgStr.contains("::::::::::")) {  
        updateStatus(STS_WARNING_IMG,"Converter might have failed to transform the image correctly");
    }
    
    elsif (convertedImgStr.contains("null")) {
        updateStatus(STS_FAILURE_IMG,"Converter failed to transform the image");
    }
    
    else {
    updateStatus(STS_SUCCESS_IMG,"");
    }
    
    public void updateStatus(String constant,String logMessage){
        VIEW.updateStatus(constant);
        LOG.warn(logMessage);
    }
    
  4. # 4 楼答案

    最简单的方法是:

    if (convertedImgStr.contains("::::::::::")) {
        VIEW.updateStatus(STS_WARNING_IMG);
        LOG.warn("Converter might have failed to transform the image correctly");
    } else if (convertedImgStr.contains("null")) {
        VIEW.updateStatus(STS_FAILURE_IMG);
        LOG.warn("Converter failed to transform the image");
    } else {
        VIEW.updateStatus(STS_SUCCESS_IMG);
    }
    

    如果在某种方法范围内,可以尝试这样的事情:

    if (!convertedImgStr.contains("::::::::::") && !convertedImgStr.contains("null")) {
        VIEW.updateStatus(STS_SUCCESS_IMG);
        return;
    }
    if (convertedImgStr.contains("::::::::::")) {
        VIEW.updateStatus(STS_WARNING_IMG);
        LOG.warn("Converter might have failed to transform the image correctly");
        return;
    }
    VIEW.updateStatus(STS_FAILURE_IMG);
    LOG.warn("Converter failed to transform the image");
    (...)
    

    您还可以尝试使用java8的一些技巧:

    Status status = Optional.ofNullable(convertedImgStr).filter(str -> str.equals(":::::::::").map(str -> STS_WARNING_IMG);
    status = Optional.ofNullable(convertedImgStr).filter(str -> str.equals("null").map(str -> STS_FAILURE_IMG);
    if (Objects.isNull(status)) {
        status = STS_SUCCESS_IMG;
    }
    

    视图。更新状态; 日志警告(…)

    在j8的情况下,你也可以做更多的变化