奇表模型空指针
Odd TableModel Null Pointer
我得到一个奇怪的空指针。这是我的 TableModel:
private class Model extends AbstractTableModel implements IEventRespondedToListener{
private List<ModelPojo> elements;
private String[] columnNames = new String[]{
"Class",
"Event",
"Event Id",
"Time"
};
public void Model(){
elements = new ArrayList<>();
}
@Override
public int getRowCount() {
return elements.size();
}
...
它是这样创建的:
public UpdateWindow(UpdateManager updateManager){
this.updateManager = updateManager;
model = new Model();
然而,我得到的异常是一个空指针:
java.lang.NullPointerException
at com.dvsd.profmetric.jms.UpdateWindow$Model.getRowCount(UpdateWindow.java:60)
at javax.swing.JTable.getRowCount(JTable.java:2664)
at javax.swing.plaf.basic.BasicTableUI.createTableSize(BasicTableUI.java:1692)
at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(BasicTableUI.java:1733)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1659)
at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScrollPaneLayout.java:495)
at java.awt.Container.preferredSize(Container.java:1794)
指向这一行:
return elements.size();
我不明白如果 elements
是在构造函数中创建的,这怎么可能为空。有什么想法吗?
这个
public void Model(){
应该是
public Model(){
添加 void
使其成为无效方法而不是构造函数。因此,当您使用 public Model()
时,您会调用隐式默认构造函数(假设没有其他构造函数),其中 elements
未被赋予值,因此保持为 null。
我得到一个奇怪的空指针。这是我的 TableModel:
private class Model extends AbstractTableModel implements IEventRespondedToListener{
private List<ModelPojo> elements;
private String[] columnNames = new String[]{
"Class",
"Event",
"Event Id",
"Time"
};
public void Model(){
elements = new ArrayList<>();
}
@Override
public int getRowCount() {
return elements.size();
}
...
它是这样创建的:
public UpdateWindow(UpdateManager updateManager){
this.updateManager = updateManager;
model = new Model();
然而,我得到的异常是一个空指针:
java.lang.NullPointerException
at com.dvsd.profmetric.jms.UpdateWindow$Model.getRowCount(UpdateWindow.java:60)
at javax.swing.JTable.getRowCount(JTable.java:2664)
at javax.swing.plaf.basic.BasicTableUI.createTableSize(BasicTableUI.java:1692)
at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(BasicTableUI.java:1733)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1659)
at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScrollPaneLayout.java:495)
at java.awt.Container.preferredSize(Container.java:1794)
指向这一行:
return elements.size();
我不明白如果 elements
是在构造函数中创建的,这怎么可能为空。有什么想法吗?
这个
public void Model(){
应该是
public Model(){
添加 void
使其成为无效方法而不是构造函数。因此,当您使用 public Model()
时,您会调用隐式默认构造函数(假设没有其他构造函数),其中 elements
未被赋予值,因此保持为 null。