簡體   English   中英

空指針異常

[英]Nullpointer exception

這可能是一個重復的問題。 我將一個字符串變量初始化為 null。我可能會也可能不會用一個值更新它。現在我想檢查這個變量是否不等於 null,無論我嘗試什么我都會得到一個空指針異常。我不能拋出空指針異常,因為它很昂貴。是否有任何有效的解決方法。TIA

如果你使用

if (x == null)

不會得到NullPointerException

我懷疑你在做:

if (x.y == null)

拋出是因為x為空,而不是因為xy為空。

如果這不能解釋它,請發布您用來測試無效性的代碼。

我猜你正在做這樣的事情,

  String s = null;

  if (s.equals(null))

你要么像這樣檢查 null

  if (s == null)

更好的方法是忽略 null 並像這樣檢查預期值,

  if ("Expected value".equals(s))

在這種情況下,當 s 為 null 時,結果始終為 false。

字符串是不可變的

@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
    String s = null;
    s.equals(null);
}

@Test
public void testStringEqualsNull2() {
    String s = null;
    TestCase.assertTrue(s == null);
}

我只比較 s==null

你能展示你寫的代碼片段嗎 s==null 永遠不會拋出 NPE

如果您正在檢查“s”是否為空,則不要在“s”之后應用點(.)。 這樣做會拋出 NullPOinterException,因為應用 dot(.) 意味着您正在嘗試訪問目前基本上為 null 的指針位置!

還可以嘗試使用檢查字符串是 null 還是空的庫函數。 您可以使用 apache 庫中的 StringUtils.isEmpty(s),它檢查了兩者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM