按鼠标左键添加新对象

Adding new object by pressing left mouse

获得了 Object 个实例的数组(Sprites),获得了通过按下鼠标左键将新对象添加到数组的方法:

private void addSprite() {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                int x = e.getX();
                int y = e.getY();
                Sprite sprite = new Ball(x, y);
                if (sprites[sprites.length - 1] == null){
                    sprites[sprites.length - 1] = sprite;
                }else if (sprites[sprites.length - 1] != null){
                    Sprite[] temp = new Sprite[sprites.length * 2];
                    System.arraycopy(sprites, 0, temp, 0, sprites.length);
                    sprites = temp;
                }

            }
        });
    }

如果 arr 已满,我创建新的临时数组,大小为 sprites.length * 2,并复制 temporary array 中的所有元素,然后更改 link sprites = temp,我得到了 NullPointerException。任务是仅使用数组添加新对象,而不是 ArrayList

我做错了什么?

像这样工作:

   private void addSprite() {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                int x = e.getX();
                int y = e.getY();
                Sprite sprite = new Ball(x, y);
                if (sprites[count] == null){
                    sprites[count] = sprite;
                    count++;
                }else if (sprites[count] != null){
                    Sprite[] temp = new Sprite[sprites.length + 1];
                    System.arraycopy(sprites, 0, temp, 0, sprites.length);
                    temp[sprites.length] = sprite;
                    sprites = temp;
                }
            }
        });
    }

如果创建数组大小:sprites.length * 2: 问题是 java 尝试 updaterender null 元素 array 如果创建 sprites.length + 1 并添加最后一个 index 元素,则数组中没有 null 元素,它工作正常。