下面两个代码有什么区别

时间:2015-11-20 22:29:24

标签: android null equals boolean-logic

以下是同一功能的两个实现。第一个是我自己写的,第二个是我在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);
}

2 个答案:

答案 0 :(得分:2)

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

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

如果provider1和provider2都为null,则认为它们是相同的提供者,并且此方法返回true。

答案 1 :(得分:0)

第二个代码对您的应用更安全,因为它会检查以确定<script src="https://maps.googleapis.com/maps/api/js?libraries=drawing&callback=initMap" async defer></script> <div id="map"></div>

然而,如果provider1和provider2在你的应用程序中往往是null,我宁愿写这样的代码:

provider1 == null