Je souhaite supprimer un objet que j'ai créé (un ovale qui vous suit), mais comment procéder?
delete follower1;
n'a pas fonctionné.
ÉDITER:
D'accord, je vais donner un peu plus de contexte. Je fais un petit jeu avec un ovale que vous pouvez contrôler, et un ovale qui vous suit. Maintenant j'ai des fichiers nommés: DrawPanel.class, cette classe dessine tout sur l'écran, et gère les collisions, les sons, etc. J'ai un ennemi.class, qui est l'ovale qui suit le joueur. J'ai un entity.class, qui est le joueur que vous pouvez contrôler. Et si le joueur croise le suiveur, je veux que mon objet joueur soit supprimé. La façon dont je le fais:
public void checkCollisions(){
if(player.getBounds().intersects(follower1.getBounds())){
Follower1Alive = false;
player.health = player.health - 10;
}
}
Réponses:
Vous devez supprimer les références en lui attribuant null ou en laissant le bloc où il a été déclaré. Après cela, il sera automatiquement supprimé par le garbage collector (pas immédiatement, mais éventuellement).
Exemple 1:
Exemple 2:
Pas quelque chose que vous recherchez actuellement, mais pour info: vous pouvez appeler le ramasse-miettes avec l'appel System.gc ()
la source
System.gc()
n'est généralement pas une bonne idée , car il peut en fait être ignoré par la JVM.null
affectation est-elle un signe certain pour le GC que cet objet doit être nettoyé lors du prochain appel du GC? * L'attributionnull
à des objets de collection (listes, tableaux) les marque pour le nettoyage? stackoverflow.com/questions/449409/…onPause
?Votre C ++ s'affiche.
Il n'y a pas
delete
de java, et tous les objets sont créés sur le tas. La JVM possède un garbage collector qui repose sur le nombre de références.Une fois qu'il n'y a plus de références à un objet, il devient disponible pour la collecte par le garbage collector.
myObject = null
ne peut pas le faire; par exemple:Tout ce que cela fait est de définir la référence
myObject
à null, cela n'affecte pas l'objetmyObject
une fois pointé, sauf pour simplement décrémenter le nombre de références de 1. PuisquemyOtherObject
fait toujours référence à cet objet, il n'est pas encore disponible pour être collecté.la source
onPause
?Si vous voulez aider un objet à disparaître, définissez sa référence sur null.
La définition de la référence à null rendra plus probable que l'objet sera récupéré, tant qu'il n'y a pas d'autres références à l'objet.
la source
onPause
?Vous n'avez pas besoin de supprimer des objets en java. Lorsqu'il n'y a pas de référence à un objet, il sera collecté automatiquement par le garbage collector.
la source
onPause
?Vous pouvez supprimer la référence à l'aide de
null
.Disons que vous avez la classe
A
:la dernière instruction supprimera la référence de l'objet
a
et cet objet sera "garbage collecté" par JVM. C'est l'un des moyens les plus simples d'y parvenir.la source
onPause
?Oui, java est Garbage collecté, il supprimera la mémoire pour vous.
la source
la source