奇表模型空指针

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。