tutorial - Java:如何檢查對像是否為空?




java studio (6)

DIY

private boolean isNull(Object obj) {
    return obj == null;
}
Drawable drawable = Common.getDrawableFromUrl(this, product.getMapPath());
if (isNull(drawable)) {
    drawable = getRandomDrawable();
}

我正在創建一個從Web檢索圖像的應用程序。 如果無法檢索圖像,則應使用另一個本地圖像。

在嘗試執行以下行時:

Drawable drawable = Common.getDrawableFromUrl(this, product.getMapPath());
if (drawable.equals(null)) {
  drawable = getRandomDrawable();
}

如果drawable為null,則行if(drawable.equals(null))拋出異常。

有沒有人知道如何檢查drawable的值,以便在它為null並且檢索本地圖像時拋出異常(執行drawable = getRandomDrawable())?


if (yourObject instanceof yourClassName) yourObjectnull if (yourObject instanceof yourClassName)將評估為false


使用google guava libs來處理is-null-check(deamon的更新)

Drawable drawable = Optional.of(Common.getDrawableFromUrl(this, product.getMapPath())).or(getRandomDrawable());

我用這種方法:

if (null == drawable) {
  //do stuff
} else {
  //other things
}

這樣我發現提高了行的可讀性 - 當我通過源文件快速讀取時,我可以看到它是一個空檢查。

關於為什麼你不能在一個可能為null對像上調用.equals() ; 如果你擁有的對象引用(即'drawable')實際上是null ,則它不指向堆上的對象。 這意味著堆上沒有對象, equals()的調用可以成功。

祝你好運!


drawable.equals(null)

上面的行在drawable對像上調用“equals(...)”方法。

因此,當drawable不為null並且它是一個真實對象時,一切順利,因為調用“equals(null)”方法將返回“false”

但是當“drawable”為null時,則意味著在null對像上調用“equals(...)”方法,意味著在不存在的對像上調用方法,因此拋出“NullPointerException”

要檢查對像是否存在且不為null,請使用以下命令

if(drawable == null) {
    ...
    ...
}

在上面的條件中,我們檢查引用變量“drawable”是否為null或包含一些值(對其對象的引用),因此如果drawable為null則不會拋出異常作為檢查

null == null

已驗證。


if (drawable == null) {
  ...
}

equals()方法檢查相等性,這意味著它比較兩個對象的內容 。 由於null不是對象,因此在嘗試將對象的內容與null的內容進行比較時會崩潰。

==運算符檢查引用相等性,這意味著它查看這兩個對象實際上是否是同一個對象 。 這不要求對象實際存在; 兩個不存在的對象( null引用)也是相等的。





android