为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中删除对象?

在Java中删除对象?

繁花如伊 2019-12-26 09:01:16
我想删除我创建的对象(跟随您的椭圆形),但是我该怎么做?delete follower1;没用。编辑:好的,我再说些背景。我正在制作一个小型游戏,它具有您可以控制的椭圆形以及跟随您的椭圆形。现在,我有一个名为DrawPanel.class的文件,该类在屏幕上绘制所有内容,并处理碰撞,声音等。我有一个仇敌.class,它是播放器后面的椭圆形。我有一个entity.class,它是您可以控制的播放器。如果播放器与跟随者相交,我希望删除播放器对象。我这样做的方式:    public void checkCollisions(){    if(player.getBounds().intersects(follower1.getBounds())){        Follower1Alive = false;        player.health = player.health - 10;    }}
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您应该通过分配null或将其保留在声明该块的位置来删除对其的引用。之后,它将被垃圾收集器自动删除(不是立即删除,而是最终删除)。


范例1:


Object a = new Object();

a = null; // after this, if there is no reference to the object,

          // it will be deleted by the garbage collector

范例2:


if (something) {

    Object o = new Object(); 

} // as you leave the block, the reference is deleted.

  // Later on, the garbage collector will delete the object itself.

仅供参考:您可以通过调用System.gc()来调用垃圾收集器


查看完整回答
反对 回复 2019-12-26
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您的C ++正在显示。


deleteJava 中没有,所有对象都在堆上创建。JVM具有依赖引用计数的垃圾收集器。


一旦不再有对对象的引用,该对象就可以由垃圾收集器进行收集。


myObject = null可能不会这样做;例如:


Foo myObject = new Foo(); // 1 reference

Foo myOtherObject = myObject; // 2 references

myObject = null; // 1 reference

所有这些操作都将引用设置myObject为null,它只myObject对引用计数减1 不会影响曾经指向的myOtherObject对象,因为仍然引用该对象,因此尚无法收集该对象。


查看完整回答
反对 回复 2019-12-26
?
精慕HU

TA贡献1845条经验 获得超8个赞

如果要帮助对象消失,请将其引用设置为null。


String x = "sadfasdfasd";

// do stuff

x = null;

将引用设置为null将使该对象更有可能被垃圾回收,只要没有对该对象的其他引用即可。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 422 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信