2010-06-01 43 views
2

我做一個條件與一個值時,它是空的,當它不爲空。 這個值爲空的時間我得到了java.lang.NullPointerExceptionjava.lang.NullPointerException

我怎麼能解決這個問題,以消除這個例外。 我需要條件時,值爲空,當它不是。

感謝您的幫助。

+7

發佈您的代碼。 – 2010-06-01 14:14:52

+1

[什麼是空指針異常,以及如何修復它?](http:// stackoverflow。com/questions/218384/what-is-null-pointer-exception-and-how-do-i-fix-it) – 2015-02-21 23:56:34

回答

7

當您嘗試使用null變量調用方法時,您會得到一個NullPointerException。簡單的例子:

String s = null; 
int len = s.length(); // NullPointerException because s is null 

所以,你應該檢查變量null調用它的任何方法,例如前:

int len; 
if (s == null) { 
    len = 0; 
} 
else { 
    len = s.length(); // safe, s is never null when you get here 
} 

注意,一個NullPointerException通常很容易解決。仔細查看異常的堆棧跟蹤,它會準確告訴您代碼的哪一行發生異常。檢查該代碼行中可能是null,並檢查是否在調用可能爲null的某個方法。添加一張支票(或者以其他方式防止相關的東西可能是null)。

3

只需進行適當的檢查,其值爲null。有條件如

if (value == null) 

將不會拋出一個空 Refe PointerException。只有當您嘗試訪問任何null參考點才能獲得例外。所以調用方法或訪問對象的其他實例成員是沒有問題的。

-1

確實混淆了這個問題,但是:

boolean isNull = true; if(value!= null){isNull = false;}

2

使用IF檢查變量不爲空,然後在ELSE代碼塊爲空時使用ELSE代碼塊。

if (variable != null) 
{ 
    //code when object is not null 
} 
else 
{ 
    //code when object is null 
} 

空指針只有throwh當您嘗試使用空值

variable.method(); 

但你應該總是避免在可能發生空指針的情況

+0

+1雖然我對最後一句話不滿意。有時我們從API調用中獲得'null'或者想要存儲來自數據庫查詢的'NULL'結果。所以這並不總是可以避免的。 – 2010-06-01 14:36:20

1

正如其他海報所述,如果您不希望此處的引用爲空,請修復導致引用在第一個引用中爲空的缺陷。但是,如果它是有效的參考可能是零,也可以做到使用三元運算符(Java 5中的)以下

int len = (s == null) ? 0 : s.length; 

注:括號內是可選的,但讓它在更多的可讀性我意見。