我的代码有问题。我正在使用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。好像他只是没有使用它。
是的我调试了它,我发现哪一行导致了这个错误。
答案 0 :(得分:0)
第一行
DeesconfViewImpl deak = getDeesconfView();
将调用函数getDeesconfView()
,该函数将返回null
值。因此第二行
RowSetIterator rowSetIterator = deak.createRowSetIterator("New");
将成为
RowSetIterator rowSetIterator = null.createRowSetIterator("New");
将生成NullPointerException
。
答案 1 :(得分:0)
您的getDeesconfView()
方法将始终返回null
。这就是您获得NPE的原因。