java - 您可以在 switch 语句的代码块中引用 case 值吗?

标签 java

那么你能在 Java 中做这样的事情吗:

Can you get the value being switched on inside a switch expression

我的代码中有很多这样的情况(为了清晰起见,删除了实际的逻辑代码):

    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() 是。我建议您将该值保存到局部变量中。您的所有案例似乎都在做同样的事情。因此,正如发布的那样,您可以简化它。喜欢

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

关于java - 您可以在 switch 语句的代码块中引用 case 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71541324/

相关文章:

java - 如何在 myeclipse 中使用 CVS 存储库

java - Java 网络,客户端多行响应中出现 'readLine()'

java - 在Google App Engine上配置Quercus

java - bufferewd 读取器间距字符串

java - 每次在 libgdx 中单击按钮时,如何向前和向后移动 Sprite?

java - 当字符串有许多相同的其他字符串时,在 Java 中搜索并替换一行

java - Spring AOP : how to get the annotations of the adviced method

java - 不使用 OPENGL 在 Android 中制作动画

java - 为什么我在developer.android.com 中看不到Kotlin 示例?

java - 如何显示无效用户输入的错误消息?