Java中嵌套开关语句的替代方法

因此,我今天编写了一种方法,该方法结合了嵌套开关语句的使用,并且代码对我来说看起来很简洁明了,但是有人告诉我,嵌套开关语句通常不是最好的处理方法,因为它们可能会使更多的语句变得混乱。切换添加的语句。这是我的代码的示例:

EnumOne enumOne;

EnumTwo enumTwo = null;

EnumTwo enumThree = null;

switch (enumOne) {

case CASE_ONE:

switch (enumTwo){

case A: enumTwo = EnumTwo.B; break;

case C: enumTwo = EnumTwo.D; break;

default: break;

}

switch (enumThree) {

case AA: enumThree = EnumTwo.BB; break;

case CC: enumThree = EnumTwo.DD; break;

default: break;

}

break;

case CASE_TWO:

case CASE_THREE:

switch(EnumTwo) {

default: break;

}

switch (enumThree) {

case AA: enumThree = EnumTwo.XX; break;

case CC: enumThree = EnumTwo.YY; break;

default: break;

}

break;

default:

break;

}

因此,我的问题是,从本质上讲,什么是这些switch语句的合适替代方案?

回答:

我建议您用对过程的调用替换每个嵌套的switch语句,然后该过程将执行嵌套的switch代码。

改为这样写:

    EnumOne enumOne;

EnumTwo enumTwo = null;

EnumTwo enumThree = null;

switch (enumOne)

{

case CASE_ONE:

nested_switch1();

case CASE_TWO:

case CASE_THREE:

nested_switch2();

break;

default:

break;

}

nested_switch1() {

switch (enumTwo)

{

case A:

enumTwo = EnumTwo.B;

break;

case C:

enumTwo = EnumTwo.D;

break;

default:

break;

}

switch (enumThree)

{

case AA:

enumTwo = EnumTwo.BB;

break;

case CC:

enumTwo = EnumTwo.DD;

break;

default:

break;

}

break;

}

nested_switch2() {

switch(EnumTwo)

{

default:

break;

}

switch (enumThree)

{

case AA:

enumTwo = EnumTwo.XX;

break;

case CC:

enumTwo = EnumTwo.YY;

break;

default:

break;

}

}

以上是 Java中嵌套开关语句的替代方法 的全部内容, 来源链接: utcz.com/qa/397230.html

回到顶部