那么你能在 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/