簡體   English   中英

您可以在 switch 語句的代碼塊中引用 case 值嗎?

[英]Can you refer to case values inside the code block of the switch statement?

那么你能不能在 Java 中做這樣的事情:

你能在 switch 表達式中獲取被打開的值嗎

我的代碼中有很多情況看起來像這樣(為清楚起見刪除了實際邏輯代碼):

    switch (weatherSystem.getRealClass().getSimpleName())
    {
        case "SyncWeatherSystem":
            logger.info("initializing sync weather system");
            …
            break;
        case "AsyncWeatherSystem":
            logger.info("initializing  async weather system");
            …       
            break;
        case "FixedWeatherSystem":
            logger.info("initializing fixed weather system");
            …
            break;
        case "NoWeatherSystem":
            logger.info("initializing no weather system");
            …
            break;
    }

我真的很想這樣做:

    switch (weatherSystem.getRealClass().getSimpleName())
    {
        case "SyncWeatherSystem":
            logger.info("initializing {}", case.value);
            …
            break;
        case "AsyncWeatherSystem":
            logger.info("initializing {}", case.value); 
            …
            break;
        case "FixedWeatherSystem":
            logger.info("initializing {}", case.value);
            …
            break;
        case "NoWeatherSystem":
            logger.info("initializing {}", case.value);
            …
            break;
    }

這在 Java 中可能嗎?

不它不是。 但是, weatherSystem.getRealClass().getSimpleName()是。 我建議您將該值保存到局部變量中。 你所有的case似乎都在做同樣的事情。 因此,正如所發布的那樣,您可以簡化它。 喜歡

String sName = weatherSystem.getRealClass().getSimpleName();
switch (sName)
{
    case "SyncWeatherSystem":
    case "AsyncWeatherSystem":
    case "FixedWeatherSystem":
    case "NoWeatherSystem":
        logger.info("initializing {}", sName);
        break;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM