This question already has answers here:
initialize java array vs other initialization?
                                
                                    (5个答案)
                                
                        
                5年前关闭。
            
        

我正在初始化一个Object(Bateau),其中包含一个称为元素的对象(元素)数组。

调用构造函数后,我想为“ bateau”对象创建多个元素。

元素的数量取决于哪种类型的“ bateau”而有所不同,这是因为“ Bateau”具有3个子类,这些子类确定要初始化的元素的数量。

当我尝试向元素中添加新元素时,我得到了NPE,有人可以帮助我解决此问题吗?

public class Bateau {
private boolean horizontal = false;
protected Element[] elements;

public Bateau(int pX, int pY, boolean horizontal, int nombreElements) {
    this.horizontal = horizontal;
    for (int i = 0; i < nombreElements; i++) {
        if (this.horizontal) {
            //NullPointerException elements[i] not initialized ?
            this.elements[i] = new Element((pX + i), pY);
        } else {
            this.elements[i] = new Element(pX, (pY + i));

        }
    }
}}

最佳答案

在调试器中,您将看到

Element[] elements = null;


我建议你用

elements = new Element[nombreElements];

09-10 09:50