java if else-if在子函数中不返回null

tzxcd3kk  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(100)

我的原始代码是这样的

public String getToken() {
  A a = new A();
  B b = new B();
  if (a.getMeow() == "2") {
    if (a.getBow() == "3") {
      return a.getBow();
    } else if (a.getBow() == "4") {
      return a.getMeow();
    }
  } else {
    if (b.getBow() == "2") {
      return b.getBow();
    } else if (b.getBow() == "10") {
      return b.getMeow();
    }
  }
  String meow = a.getMeow;
  meow += "2";
  return meow;
}

现在,我想重构这段代码,这样if和else条件中的代码就在子函数中

public String getAString(A a) {
  if (a.getBow() == "3") {
    return a.getBow();
  } else if (a.getBow() == "4") {
    return a.getMeow();
  }
  return null;
}

public String getBString(B b) {
  if (b.getBow() == "2") {
    return b.getBow();
  } else if (b.getBow() == "10") {
    return b.getMeow();
  }
  return null
}

public String getToken() {
  A a = new A();
  B b = new B();
  if (a.getMeow() == "2") {
    return getAString(a);
  } else {
    return getBString(b);
  }
  String meow = a.getMeow();
  meow += "2";
  return meow;
}

但是重构后的代码中有一个问题,如果if (a.getBow() == 3)中的所有条件都不在条件内,那么在原始代码中,它会跳过这些条件,并返回meow。但是在这段代码中,它将返回null。
看起来很简单,但我就是想不通。

7cwmlq89

7cwmlq891#

您可以检查是否为null,并在两者都为null的情况下返回有效字符串:

public String getToken() {
  A a = new A();
  B b = new B();
  String res = null;
  if (a.getMeow().equals("2")) {
    res = getAString(a);
  } else {
    res = getBString(b);
  }
  if (res == null) {
    res = a.getMeow();
    res += "2";
  }
  return res;
}

相关问题