Java开关语句的多种情况
我只是想弄清楚如何在Java开关语句中使用许多多个案例。下面是我想做的一个例子。
switch (variable)
{
case 5..100:
doSomething();
break;
}
与不得不做的事相比。
switch (variable)
{
case 5:
case 6:
etc.
case 100:
doSomething();
break;
}
有什么想法,这是否可行,或有什么好的替代方案?
107
3
遗憾的是,这在Java中是不可能的。你将不得不使用
if-else
语句。第二个选项是完全可以的。 我不知道为什么有回答者说这是不可能的。 这很好,我一直在这样做。
一个面向对象的选择是使用 "责任链模式 "对决策进行建模,以取代过大的 "开关 "和 "if/else "结构。
责任链模式
下面是一个使用泛型的实例实现,它也是类型安全的。
这只是我在几分钟内完成的一个快速草图,更复杂的实现可能允许将某种 "命令模式 "注入到 "案例 "的实现实例中,使其更像一个回调的IoC风格。
这种方法的好处是,Switch/Case语句都是关于副作用的,这种方法将副作用封装在类中,因此可以更好地管理和重用它们,它最终更像是功能语言中的模式匹配,这并不是一件坏事。
我将在Github上发布这个Gist的任何更新或改进。