Forum Clubic

[JAVA] utilisation de 'this' - charge mémoire

Bonjour,

Est-il plus lourd d’utiliser l’instruction ‘this’ dans une classe ?
cela fait il un appel mémoire supplémentaire ?
Merci

bonjour,
non.

certains préconisent de l’utiliser pour différentier les attributes des variables locales, d’autres préconisent un préfixation. personnellement, je suis pour un code peu chargé et clair.
mais c’est juste une mode d’écriture :neutre:

note: dans les setter, cela permet néanmoins de nommer l’argument et l’attribut du même nom pour écrire: this.nom=nom … au détriment de la clarté :smiley:

Oui c’est souvent préconisé pour une raison de clarté comme l’exemple que tu as pris sur this.nom = nom.
Aussi dans un constructeur quand tu en appeles un autre du même nom mais avec des arguments différents.

Je m’interroge surtout sur la charge mémoire de cet appel, si c’est couteux ou non, je ne trouve aucun site à ce sujet

this n’est qu’un pointeur sur l’objet courant, ça ne prend rien en place :neutre:

Ah, j’avais compris comme préfixe de variable, car dans ce cas, la compilation doit donner le même résultat, on pourrais vérifier en compiler en mnémonic p-code (l’assembleur Java) je ne trouve plus l’option pour ça.

dans le cas de l’appel d’un autre constructeur, je pense que ça revient à un appel de méthode.Et il ne faut pas considérer l’appel de méthode comme couteux, c’est normal pour bien factoriser le code.
Par contre, il est déconseillé d’exécuter du traitement dans un constructeur, il vaut mieux se limiter à de l’initialisation des attributs: dans le constructeur, l’objet n’est pas complètement initialisé, il est suceptible de ne pas être créé si la construction renvoie une exception, et si d’autre objet ont déjà obtenu la référence à cet objet on est pas certain du résultat obtenu: bref une source de bugs.

bon, excuse moi, C’est un peu long, j’ai divergé sur des théorie conceptuelles :smiley:

edit:
jeanguy> là il parlait d’un this(arg0,arg1) appelé dans le constructeur d’un objet pour déléguer à un autre constructeur.

Pourquoi au détriment ?
Moi je trouve que this.nom=nom; est assez clair.

deltree -> je parle pas d’un this particulier, ni de l’interet d’indjoindre du code à un constructeur.
je parle uniquement du cout d’un this, si cela en présente un au niveau mémoire principalement