添加到自定义链接列表会导致NullPointerException

时间:2013-03-26 20:52:08

标签: java nullpointerexception linked-list custom-component

因此,在我的自定义链接列表中添加内容会导致NullPointerException,而在我的生活中,我无法找出原因。该程序的目的是模拟抽屉柜,其中包含抽屉作为节点的列表。每个抽屉都有一个列表,其中包含家庭对象作为节点。

这是相关的代码位。在我的UI类中创建:new ChestOfDrawers(3);时会发生错误:

public class ChestOfDrawers{

    private static OwnList chest;  
    private static int[] parametres;

    public ChestOfDrawers (int drawers){
        chest = new OwnList();
        create();
    }

    public static void create(){
        for (int i = 0; i < parametres.length; i++) {
            Object drawer = new Drawer(i, parametres[i]);
            chest.add(i, drawer); //This is causing the error
        }   
    }
}

这里引用的Drawer类是抽屉的类。它需要int i作为ID,int parametres作为抽屉容量。在添加到列表之前,parametres[]数组将被填充,并且它包含抽屉容量的信息。问题(OwnList)中的链接列表正常运行,因为它是提供的课程材料的一部分,它几乎与Java自己的相同。我在另一个测试类中测试了这个类,它工作得很好,我在某个地方犯了一个错误。请帮忙!

1 个答案:

答案 0 :(得分:4)

问题是您没有初始化参数阵列。默认情况下,此字段为空。您需要在声明它的位置初始化它,或者在静态初始化程序块中初始化它。另外,为什么两个字段和create方法是静态的?那些看起来像是实例状态......

这是一个更好的版本:

public final class ChestOfDrawers{
    private final OwnList chest = new OwnList();  
    private final int[] parametres;

public ChestOfDrawers (int drawers){
    if (drawers < 0) throw new IllegalArgumentException("Drawers may not be negative");
    chest = new OwnList();
    parametres = new int[drawers]; // <-- I'm assuming that's the intended meaning
    initialize();
}        

private void initialize(){
    for(int i = 0; i < parametres.length; i++){
        Object drawer = new Drawer(i, parametres[i]); // <-- parametres[i] will always be 0
        chest.add(i, drawer); 
    }   
}
}

我不确定你需要什么参数数组实际包含(一个新的int数组将填充零值) - 但我会把它作为练习留给读者: - )