我的活动代码中的NullPointerException

时间:2014-04-25 09:43:11

标签: java oracle nullpointerexception oracle-adf jdeveloper

我的代码有问题。我正在使用Oracle JDeveloper 12c而我无法处理我的代码。我有一个名为deactivate的方法:

   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 deak = getDeesconfView();

他没有看到getDeesconfView,JDeveloper给了我一个插入方法的提示

private DeesconfViewImpl getDeesconfView() {
    return null;
}

并且代码成功编译,但我的方法中有nullPointerException,它应该将所有行设置为非活动状态,并且我选择了这个活动:

public void activeYear() {
        deactivate(); 

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

我确信问题是 DeesconfViewImpl deak = getDeesconfView(); 但我不知道这段代码会发生什么。如果我删除此行,则出现以下错误:

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

他没有看到getDeesconfView。好像他只是没有使用它。

是的我调试了它,我发现哪一行导致了这个错误。

2 个答案:

答案 0 :(得分:0)

第一行

DeesconfViewImpl deak = getDeesconfView();

将调用函数getDeesconfView(),该函数将返回null值。因此第二行

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

将成为

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

将生成NullPointerException

答案 1 :(得分:0)

您的getDeesconfView()方法将始终返回null。这就是您获得NPE的原因。