Подтвердить что ты не робот

Удаление объекта в java?

Я хочу удалить созданный мной объект (овал, который следует за вами), но как бы я это сделал?

delete follower1;

не работает.

EDIT:

Хорошо, я расскажу о другом контексте. Я делаю небольшую игру с овалом, которым вы можете управлять, и овалом, который следует за вами. Теперь у меня есть файлы с именем: DrawPanel.class, этот класс рисует все на экране и обрабатывает столкновения, звуки и т.д. У меня есть вражеский класс, который является овалом после игрока. У меня есть entity.class, который является игроком, которым вы можете управлять. И если игрок пересекается с последователем, я хочу, чтобы объект моего игрока был удален. Как я это делаю:

    public void checkCollisions(){
    if(player.getBounds().intersects(follower1.getBounds())){
        Follower1Alive = false;
        player.health = player.health - 10;
    }
}
4b9b3361

Ответ 1

Вы должны удалить ссылки на него, присвоив значение 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()

Ответ 2

Показывается ваш С++.

В java нет delete, и все объекты создаются в куче. JVM имеет сборщик мусора, который полагается на подсчет ссылок.

Как только больше нет ссылок на объект, он становится доступным для сбора сборщиком мусора.

myObject = null может не делать этого; например:

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

Все это означает, что ссылка myObject равна null, она не влияет на объект myObject, когда указана точка, за исключением того, что просто уменьшает счетчик ссылок на 1. Так как myOtherObject все еще ссылается на этот объект, это еще не доступны для сбора.

Ответ 3

Если вам нужна помощь, чтобы объект ушел, установите ссылку на нуль.

String x = "sadfasdfasd";
// do stuff
x = null;

Ссылка на значение null делает более вероятным, что объект будет собираться мусором, если нет других ссылок на объект.

Ответ 4

Вам не нужно удалять объекты в java. Когда нет ссылки на объект, он будет собираться сборщиком мусора автоматически.

Ответ 5

Вы можете удалить ссылку, используя null.

Скажем, у вас есть класс A:

A a = new A();
a=null;

последний оператор удалит ссылку объекта A, и этот объект будет "мусором, собранным" JVM. Это один из самых простых способов сделать это.

Ответ 6

Да, java - собранный мусор, он удалит вам память.

Ответ 7

//Just use a List
//create the list
public final List<Object> myObjects;

//instantiate the list
myObjects = new ArrayList<Object>();

//add objects to the list
Object object = myObject;
myObjects.add(object);

//remove the object calling this method if you have more than 1 objects still works with 1
//object too.

private void removeObject(){
int len = myObjects.size();
for(int i = 0;i<len; i++){
Objects object = myObjects.get(i);
myObjects.remove(object);
}
}