gpt4 book ai didi

java - Java 中嵌套 Switch 语句的替代方案

转载 作者:太空狗 更新时间:2023-10-29 22:31:43 26 4
gpt4 key购买 nike

所以我今天写了一个方法,结合了嵌套 switch 语句的使用,代码对我来说看起来相当干净和简洁,但我被告知嵌套 switch 语句通常不是最好的方法,因为它们会让人困惑使用您添加的更多 switch 语句。这是我的代码示例:

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 语句的合适替代方案?

最佳答案

  1. 因为使用大量开关变得很难阅读。
  2. 每当出现新案例时,我们都必须修改代码并添加一个案例

我们可以考虑在这种情况下使用多态

我将通过一个简单的类(class)来让您理解。假设前面有一个带有 switch case 的类

class Test
{
Animal a;
public Test(Animal a)
{
this.a=a;
}

public moveThisAnimal()
{
switch(this.a)
{
case fish:
System.out.println("swim");
break;

case dog:
System.out.println("walk");
break;

case bird:
System.out.println("fly");
break;
}
}
}

现在我们用我们的多态逻辑替换这些开关

Interface Animal
{
String move();
}

Class Dog implements Animal
{
public String move()
{
return "walk";
}
}


Class Bird implements Animal
{
public String move()
{
return "fly";
}
}


Class Fish implements Animal
{
public String move()
{
return "swim";
}
}

现在我们有了没有 switch case 的测试类

class Test
{
Animal a;
public Test(Animal a)
{
this.a=a;
}
public moveThisAnimal()
{
System.out.println(this.a.move()); // all switch case statements removed
}
}

即使我们必须添加更多的案例,我们也只需要添加实现,这里没有变化

查看完整代码并查看是否可行

关于java - Java 中嵌套 Switch 语句的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com