在Java中删除游戏中的对象(eclipse)

让我们直接进入它,我有一个充满getter和setter的’handler’类,它包含添加和删除对象的代码,它看起来像这样:

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

请注意,’GameObject’是一个类,所有对象都扩展该类
然后我在这里创建一个对象,

 if(mouseOver(mx, my, 840/2-100, 149, 200, 64)){ game.gameState = STATE.Game; handler.addObject(new Player(0, 300, ID.Player,game.playerImg, game)); handler.addObject(new BasicEnemy(700, 300, ID.BasicEnemy, game.enemyImg, game)); handler.addObject(new F1Jutsu(400, 300, ID.F1Jutsu, game.f1jutsuImg, game)); } 

内部参数中的东西是我想要添加的对象的参数。 每个对象当然都是它自己的类。 现在我想删除对象F1Jutsu,如果它的x值在游戏之外,并且对象每秒向右移动(这样可行,所以我不会在这里粘贴它,如果被问到会这样做)

  if(x > 800){ handler.removeObject(this); } 

我有一个’tick’函数(在F1Jutsu类中),就像一个run函数。 问题是,一旦调用removeObject方法,我得到一个nullpointerexception,出现以下错误:

 Exception in thread "Thread-2" java.lang.NullPointerException at com.ninja.main.F1Jutsu.tick(F1Jutsu.java:24) at com.ninja.main.Handler.tick(Handler.java:14) at com.ninja.main.Game.tick(Game.java:110) at com.ninja.main.Game.run(Game.java:87) at java.lang.Thread.run(Unknown Source) 

基本上,在F1Jutsu类中有一个NullPointerException(我正在移除null ??但它是一个对象),它被告知要删除对象,然后是调用remove对象方法的每个地方以及调用该地方调用的所有地方放置对象等会导致错误。
我认为这个想法可能是对象的x值现在为null,这是nullpointer(?)但不确定,如果是这样,我将如何解决这个问题?
对不起,我很抱歉(土豆?)
编辑:

F1Jutsu第24行是:

 if(x > 800){ handler.removeObject(this); } 

MRK我不确定你的意思,我包括我添加对象的部分和我在上面的代码中删除的地方。
编辑:
好的,经过大量的工作,我得出结论,当我添加对象时,它被添加为空图像。 我必须问我如何在不改变代码基础的情况下将其设置为某种东西(不是空的)(参数)

你不应该在你删除的对象的代码块中间调用remove方法; 即使它被删除它将尝试完成代码,但将失败,因为它的所有变量将为null 。 要修复此错误,我建议在GameObject类中添加一个名为removedboolean 。 而不是调用handler.removeObject(this)只需将handler.removeObject(this) removed等于true 。 然后,您需要在tick()方法中的Handler类中添加几行代码,以检查并删除removed值为true所有对象。 像这样的东西

 for (int i = 0; i < object.size(); i++) { if (object.get(i).removed) object.remove(i); }