每当检查对象是否为空时都会显示错误?

时间:2019-11-23 12:34:05

标签: java nullpointerexception

是的,我知道问题遍及整个Internet,但是...发生了一些奇特的事情...我开始在PC上开发一个项目,这一切都很完美,但是当我将其重写到笔记本电脑上时(我检查了所有内容,甚至复制粘贴了一些代码),有时它可以正常工作,但在其他时候,它写到我的对象为null并抛出NullPointerException。我尝试通过以下方式修复它:

        if(object.get(i) == null){
    removeObject(object.get(i));
    } else {
//do stuff
}

但是它在if行上抛出了NullPointerException错误...

要明确起见:

“对象”是一个包含GameObject值的LinkedList,这些值是我制作的抽象类。

removeObject是Handler类(带有错误的类)中的一个方法...我将向您展示整个外观

// Package info

import java.awt.Graphics;
import java.util.LinkedList;

public class Handler {

    LinkedList<GameObject> object = new LinkedList<GameObject>();

    public void tick() {
        for (int i = 0; i < object.size(); i++) {
            GameObject tempObject = object.get(i);

            tempObject.tick();
        }
    }

    public void render(Graphics g) {
        for (int i = 0; i < object.size(); i++) {

            if (object.get(i) == null) { //Error line
                removeObject(object.get(i));
            } else {
                GameObject tempObject = object.get(i); 
//If I don't use the whole if else thing the row above is the error line
                tempObject.render(g);
            }

        }
    }

    public void addObject(GameObject object) {
        this.object.add(object);
    }

    public void removeObject(GameObject object) {
        this.object.remove(object);
    }

    public void clearEnemies() {
        for (int i = 0; i < object.size(); i++) {
            GameObject tempObject = this.object.get(i);

            if (tempObject.getId() == ID.Player) {
                object.clear();
                if (Game.gameState != Game.STATE.END || Game.gameState != Game.STATE.FINISH) {
                    addObject(new Player((int) tempObject.getX(), (int) tempObject.getY(), ID.Player, this));
                }
            }
        }
    }

    public void clearAll() {
        object.clear();
    }

}

其他所有功能都可以正常运行,并且在我的PC上,相同的代码可以正常运行,没有任何错误...任何人都可以帮助我吗?

欣赏每条评论:)

0 个答案:

没有答案