我想使用switch
语句,但是我无法在没有重复代码或使用随附的if
语句的情况下构造它。有没有解决的办法?在switch语句(Java)中重用代码
我有5个案例,除了其中一个之外,我想执行某些操作。所以用switch
声明,我可以这样做:
switch(x) {
case A:
foo();
break;
case B:
case C:
case D:
case E:
bar();
break;
}
简单。但困难在于我还需要针对每一个执行另一个独特的操作,所以我不能使用案例的fall-through功能。所以我减少要么
switch(x) {
case A:
foo();
baz(0);
break;
case B:
bar();
baz(1);
break;
case C:
bar();
baz(2);
break;
case D:
bar();
baz(3);
break;
case E:
bar();
baz(4);
break;
}
这气味我,因为不必每次都要重复bar()
的,或
switch(x) {
case A:
baz(0);
break;
case B:
baz(1);
break;
case C:
baz(2);
break;
case D:
baz(3);
break;
case E:
baz(4);
break;
}
if (x != A) { bar(); }
不复制任何代码,但它困扰我,有我需要同时使用switch
和if
。
我想另外一个替代方法是使用地图,像
Map<X, Integer> m = new HashMap<X, Integer>();
m.put(A, 0);
m.put(B, 1);
m.put(C, 2);
m.put(D, 3);
m.put(E, 4);
if (m.get(x) == 0) {
foo();
} else {
bar();
}
baz(m.get(x));
但现在我已经介绍了整个数据结构只是清理它。 (当你计算地图的初始化时,它甚至没有那么干净。)
任何提示?
你不能/不想加上'如果(ARG == 0)条();''来baz'? –
我想我可以,但我希望它更一般......事实上,在我的代码中,它甚至不是'bar()',它只是一个赋值语句。 –