删除内部类的引用

26 浏览
0 Comments

删除内部类的引用

我想删除我创建的一个物体(一个跟随你的椭圆形),但我该怎么做呢?

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日
0
0 Comments

你的C++的风格暴露了出来。

在Java中没有delete语句,所有的对象都是在堆中创建的。虚拟机有一个垃圾回收器,它依赖于引用计数。

一旦没有指向该对象的引用,该对象就变得可以被垃圾回收器收集。

myObject = null可能并不会做到;例如:

Foo myObject = new Foo(); // 1 reference
Foo myOtherObject = myObject; // 2 references
myObject = null; // 1 reference

这只是把myObject的引用设置为null,它并没有影响以前指向的myObject对象,只是简单地将引用计数减一。因为myOtherObject仍然引用该对象,所以它还没有变得可以被回收。

0
0 Comments

你应该通过将其赋值为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()来调用垃圾收集器。

0