删除内部类的引用
删除内部类的引用
我想删除我创建的一个物体(一个跟随你的椭圆形),但我该怎么做呢?
delete follower1;
不起作用。
编辑:
好的,我来提供更多的背景。我正在制作一个小游戏,有一个你可以控制的椭圆形,还有一个跟随你的椭圆形。现在我有几个文件:DrawPanel.class,这个类在屏幕上绘制所有东西,并处理碰撞、声音等。我有一个enemy.class,它是跟随玩家的椭圆形。我有一个entity.class,它是你可以控制的玩家。如果玩家与跟随者相交,我希望我的玩家对象被删除。我现在的做法是:
public void checkCollisions(){ if(player.getBounds().intersects(follower1.getBounds())){ Follower1Alive = false; player.health = player.health - 10; } }
admin 更改状态以发布 2023年5月23日
你的C++的风格暴露了出来。
在Java中没有delete
语句,所有的对象都是在堆中创建的。虚拟机有一个垃圾回收器,它依赖于引用计数。
一旦没有指向该对象的引用,该对象就变得可以被垃圾回收器收集。
myObject = null
可能并不会做到;例如:
Foo myObject = new Foo(); // 1 reference Foo myOtherObject = myObject; // 2 references myObject = null; // 1 reference
这只是把myObject
的引用设置为null,它并没有影响以前指向的myObject
对象,只是简单地将引用计数减一。因为myOtherObject
仍然引用该对象,所以它还没有变得可以被回收。
你应该通过将其赋值为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.
虽然不是你当前正在寻找的,但是FYI:你可以通过调用System.gc()来调用垃圾收集器。