2014-04-25 50 views
-1

我的代碼有問題。我正在使用Oracle JDeveloper 12c,並且無法處理我的代碼。我有一個方法叫做去激活:我的活動代碼中的NullPointerException

public void deactivate() { 
    DeesconfViewImpl deak = getDeesconfView(); 
    RowSetIterator rowSetIterator = deak.createRowSetIterator("New"); 
    if (rowSetIterator != null) { 
     rowSetIterator.reset(); 
     while (rowSetIterator.hasNext()) { 
      Row currentRow = rowSetIterator.next(); 
      currentRow.setAttribute("Active", 0); 
     } 
     rowSetIterator.closeRowSetIterator(); 
    } 
} 

其具有在管線中的問題: DeesconfViewImpl迪克= getDeesconfView();

他沒有看到getDeesconfView,JDeveloper中給了我一個提示插入方法

private DeesconfViewImpl getDeesconfView() { 
    return null; 
} 

和代碼編譯成功地,但我有NullPointerException異常在我的方法,這是應該將所有的行爲無效,而這一次我選擇爲活性:

public void activeYear() { 
     deactivate(); 

    this.getCurrentRow().setAttribute("Active", 1); 
} 

我相信,這個問題是 DeesconfViewImpl迪克= getDeesconfView(); 但我不知道在這段代碼中會發生什麼。如果我刪除這一行,我有一個錯誤:

public class DeesconfViewImpl extends ViewObjectImpl implements DeesconfView { 
     private static DeesconfView getDeesconfView; 
} 

他沒有看到getDeesconfView。似乎他只是不使用它。

是的,我調試它,我發現已經哪一行導致此錯誤。

+3

一旦你** Debug **,'NPE'可以很容易找到。所以你先嚐試一下嗎? –

+0

哪條線路導致NPE? –

+0

NPE有**正好**一個原因。堆棧跟蹤告訴你*確切地說*你的代碼的哪一行是問題。你需要調試你的代碼並找出爲什麼你有一個'null'引用。 –

回答

0

第一行

DeesconfViewImpl deak = getDeesconfView(); 

將調用函數getDeesconfView()這將返回一個null值。因此,第二行

RowSetIterator rowSetIterator = deak.createRowSetIterator("New"); 

會讓

RowSetIterator rowSetIterator = null.createRowSetIterator("New"); 

這將使NullPointerException

0

您的getDeesconfView()方法將始終返回null。這就是您得到NPE的原因。

相關問題