在 Java 中减少 if-else 语句

我有以下代码:

void f(String t)
{
  if(t.equals("a"))
  {
    someObject.setType(ObjectType.TYPE_A);
  }
 else if(t.equals("b"))
  {
    someObject.setType(ObjectType.TYPE_B);
  }

// 50 more similar code

}

有没有简单的方法来重写if-else条件,以免有那么多代码?


答案 1

你应该使用一些东西来消除If is an的重复,然后在那里写一个类似于的方法来实现这一点。看看你是否喜欢这种解决方案:someObject.setType(ObjectType....))ObjectTypeenumvalueOf

void f(String t) { someObject.setType(ObjectType.byName(t)); }

enum ObjectType {
  TYPE_A, TYPE_B;
  public static ObjectType byName(String name) {
    return valueOf("TYPE_" + name.toUpperCase());
  }
}

答案 2

使用映射(您必须填充),该映射从映射到值的任何类型。StringObjectType.TYPE_x


推荐