92 votes

Est en train de passer 'ceci' dans un appel de méthode accepté en java

Est-il bon/mauvais/acceptable pratique pour passer l’objet en cours dans un appel de méthode. Comme dans :

Plus précisément, est la ligne `` acceptable ?

164voto

morgano Points 8701

Il n’y a rien de mal à cela. Ce qui n’est pas conseillé est de faire la même chose à l’intérieur des constructeurs, parce que vous donneriez une référence à un objet non-encore-complètement initialisé.

Il y a une sorte de poste similaire ici : Java qui fuient ce constructeur où ils donnent une explication de pourquoi ce dernier est une mauvaise pratique.

152voto

dystroy Points 145126

Il n'y a aucune raison de ne pas l'utiliser, this est l'instance en cours et il est parfaitement légitime d'utiliser. En fait, il n'y a souvent pas de moyen propre de l'omettre.

Afin de l'utiliser.

Comme il est difficile de les convaincre qu'il est acceptable sans exemple (une réponse négative à cette question est toujours plus facile d'argument), je viens d'ouvrir l'un des plus commun de java.lang classes, l' String , et bien sûr j'ai trouvé les instances de cette utilisation, par exemple

1084        // Argument is a String
1085        if (cs.equals(this))
1086            return true;

Recherchez "(this" dans les grandes "accepté" de projets, vous n'aurez pas manqué de le trouver.

42voto

Stefanos T. Points 452

Oui, mais vous devriez être soigneusement deux choses

  1. En passant cette fois l’objet n’a pas encore été construit (c'est-à-dire dans son constructeur)
  2. Cela en passant un objet de longue durée de vie, qui gardera la référence vivante et empêche le cet objet de déchets collectés.

13voto

Bathsheba Points 23209

Il est parfaitement normal et tout à fait acceptable.

5voto

Juned Ahsan Points 33217

cela représente l'objet courant. Ce que vous faites est sytatically correct, mais je ne vois pas le besoin de cette si vous êtes à l'appel de la méthode dans la même classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X