这个空字符串检查是多余的吗?

时间:2017-09-28 15:18:41

标签: java android string

在Android' frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java中有以下条款:

    //if device type is tablet force enable NavigationBar and forbid NavigationBar move
    String deviceType = SystemProperties.get("sys.device.type");
    if (! "".equals(deviceType) && deviceType.equals("tablet")) {
        mNavigationBarCanMove = false;
        mHasNavigationBar = true;
    }

! "".equals(deviceType) &&完全是多余的,还是有意义呢?

2 个答案:

答案 0 :(得分:2)

是的,在这种情况下它是多余的,因为第二个子句涉及第一个(如果deviceType不为空),所以您可以简化以下操作:

//Use constant string to perform comparison to avoid possible NPE
if("tablet".equals(deviceType)) {}

答案 1 :(得分:1)

声明if (! "".equals(deviceType) && deviceType.equals("tablet"))有几个原因:

    在这种情况下,
  1. "".equals(deviceType)无价值。
  2. deviceType.equals("tablet")是一种将String变量与常量进行比较的粗心方法。
  3. !的使用可能会让软java程序员感到困惑(这有更高的预防性:!或&&amp ;?)。
  4. 将语句替换为:

    if ("tablet".equals(deviceType))
    

    这样更好,因为当deviceType为null时,它不会抛出NullPointerException。

    注意:建议使用TextUtils也是多余的。