【问题标题】:What is the difference between the two codes below下面两个代码有什么区别
【发布时间】:2015-11-20 22:29:24
【问题描述】:

这里有两个相同功能的实现。第一个是我自己写的,第二个是我在http://developer.android.com/guide/topics/location/strategies.html看到的。

**1st code:**
private boolean isSameProvider(String provider1, String provider2) {
    if (provider1.equals(provider2)) {
      return true;
    }
    else return false;
}

**2nd code:**
private boolean isSameProvider(String provider1, String provider2) {
    if (provider1 == null) {
      return provider2 == null;
    }
    return provider1.equals(provider2);
}

【问题讨论】:

  • 第二个代码进行空检查...如果 provider1 为空,第一个代码将结束 NullPointerException...
  • @convexHull 第二个代码和第一个代码有什么关系?

标签: android null equals boolean-logic


【解决方案1】:

如果参数provider1 为null,则第一段代码可能会抛出NullPionterException。我们在一个空对象上调用provider1.equals(provider2)

第二段代码检查参数provider1是否为null,如果确实为null,则检查参数provider2是否也为null。

如果provider1 和provider2 都为null,则认为它们是同一个provider,并且此方法返回true。

【讨论】:

    【解决方案2】:

    第二个代码对您的应用更安全,因为它会检查以确保 provider1 == null

    但是,如果 provider1 和 provider2 在您的应用程序中往往为空,我宁愿这样编写代码:

    private boolean isSameProvider(String provider1, String provider2) {
        if (provider1 != null && provider2 != null) {
            return provider1.equals(provider2);
        }
        return false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2019-09-12
      相关资源
      最近更新 更多