Normalement, je n'utilise que this
dans les constructeurs.
Je comprends qu'il est utilisé pour identifier la variable de paramètre (en utilisant this.something
), si elle a un même nom avec une variable globale.
Cependant, je ne sais pas quelle est la vraie signification de this
Java et ce qui se passera si j'utilise this
sans dot ( .
).
Réponses:
this
fait référence à l'objet courant.Chaque méthode non statique s'exécute dans le contexte d'un objet. Donc, si vous avez une classe comme celle-ci:
Puis appeler
frobnicate()
surnew MyThisTest()
imprimeraSi efficacement, vous l'utilisez pour plusieurs choses:
la source
main
méthode est requise. Si j'ajoute la méthode principale, je dois appeler à partir de là. Et toute tentative d'appeler frobnicate () à l'intérieur de main indique que vous ne pouvez pas appeler une référence non statique depuis l'intérieur d'une référence statique. Et la suppression de statique demain
renvoie à nouveau l'erreur qu'aucune méthode principale n'est trouvée. S'il vous plaît, expliquez.this.
fonctionne. Ma compréhension est quethis.
vous permet d'appeler une méthode ou une variable qui est unique à la version instanciée de la classe, permettant à une autre version de la méthode ou de la variable d'exister qui est appelée sans invoquerthis.
Dans un simple appeléTest.class
j'ai deux méthodes:public static void main()
etpublic Test()
je ne peut pas transmettre d'informations entre les méthodes car ilmain
est statique et les constructeurs ne peuvent pas être rendus statiques. Dois-je publier une nouvelle question?static
signifie essentiellement que vous n'avez pas besoin d'une instance de la classe pour l'appeler et que vous n'aurez pas accès à l'this
intérieur.Ce qui suit est un copier-coller à partir d' ici , mais explique très bien toutes les différentes utilisations du
this
mot - clé:Définition: le
this
mot - clé Java est utilisé pour faire référence à l'instance actuelle de la méthode sur laquelle il est utilisé.Voici les façons d'utiliser ceci:
Pour indiquer spécifiquement que la variable d'instance est utilisée à la place d'une variable statique ou locale. C'est,
Ici, cela fait référence à la variable d'instance. Ici, la priorité est élevée pour la variable locale. Par conséquent, l'absence de
this
dénote la variable locale. Si la variable locale qui est le nom du paramètre n'est pas la même que la variable d'instance, indépendamment dethis
est utilisée ou non, elle désigne la variable d'instance.This
est utilisé pour référencer les constructeursCela appelle le constructeur de la même classe java qui a deux paramètres.
This
est utilisé pour passer l'instance Java actuelle en paramètreSimilaire à ce qui précède, cela peut également être utilisé pour renvoyer l'instance actuelle
Remarque: cela peut conduire à des résultats indésirables lors de l'utilisation dans les classes internes dans les deux points ci-dessus. Puisque cela fera référence à la classe interne et non à l'instance externe.
This
peut être utilisé pour obtenir le handle de la classe couranteBien que cela puisse être fait par
Comme toujours,
this
est associé à son instance et cela ne fonctionnera pas dans les méthodes statiques.la source
Pour être complet,
this
peut également être utilisé pour faire référence à l'objet extérieurla source
this
c'est ce que je cherchais! ;)super
Il fait référence à l'instance actuelle d'un objet particulier, vous pouvez donc écrire quelque chose comme
Un cas d'utilisation courant de
this
consiste à empêcher les ombres. Prenons l'exemple suivant:Dans l'exemple ci-dessus, nous voulons affecter le membre de champ à l'aide de la valeur du paramètre. Puisqu'ils partagent le même nom, nous avons besoin d'un moyen de faire la distinction entre le champ et le paramètre.
this
nous permet d'accéder aux membres de cette instance, y compris le champ.la source
Dans Swing, il est assez courant d'écrire une classe qui implémente
ActionListener
et ajoute l'instance actuelle (c'est-à-dire «this») en tant qu'ActionListener pour les composants.la source
C'est "une référence à l'objet dans le contexte actuel" en fait. Par exemple, pour imprimer "cet objet", vous pourriez écrire:
Notez que votre utilisation de "variable globale" est quelque peu décalée ... si vous l'utilisez
this.variableName
alors, par définition, ce n'est pas une variable globale - c'est une variable spécifique à cette instance particulière.la source
Citant un article sur programmation.guide:
this
a deux utilisations dans un programme Java.1. En référence à l'objet courant
La syntaxe dans ce cas ressemble généralement à quelque chose comme
Ce type d'utilisation est décrit ici: La référence 'this' (avec exemples)
2. Pour appeler un autre constructeur
La syntaxe dans ce cas ressemble généralement à quelque chose comme
Ce type d'utilisation est décrit ici: cet appel de constructeur (…) (avec exemples)
la source
Il fait référence à l'instance sur laquelle la méthode est appelée
la source
Le mot-clé this est utilisé pour faire référence à la variable actuelle d'un bloc, par exemple, considérez le code ci-dessous (juste un examen, alors ne vous attendez pas au code JAVA standard):
C'est tout. la sortie sera "2". Si nous n'avons pas utilisé le mot - clé this , la sortie sera: 0
la source
Les objets ont des méthodes et des attributs (variables) qui sont dérivés de classes, afin de spécifier quelles méthodes et variables appartiennent à un objet particulier le
this
mot réservé est utilisé. dans le cas des variables d'instance, il est important de comprendre la différence entre les paramètres implicites et explicites. Jetez un œil à l'fillTank
appel de l'audi
objet.La valeur entre parenthèses est le paramètre implicite et l'objet lui-même est le paramètre explicite, les méthodes qui n'ont pas de paramètres explicites, utilisent des paramètres implicites, la
fillTank
méthode a à la fois un paramètre explicite et un paramètre implicite.Regardons de plus près la
fillTank
méthode dans laCar
classeDans cette classe, nous avons une variable d'instance "tank". Il peut y avoir de nombreux objets qui utilisent la variable d'instance tank, afin de spécifier que la variable d'instance "tank" est utilisée pour un objet particulier, dans notre cas l'objet "audi" que nous avons construit précédemment, nous utilisons le
this
mot clé réservé. par exemple les variables l'utilisation de 'this' dans une méthode indique que la variable d'instance, dans notre cas "tank", est la variable d'instance du paramètre implicite.Le compilateur java ajoute automatiquement le
this
mot réservé pour que vous n'ayez pas à l'ajouter, c'est une question de préférence. Vous ne pouvez pas utiliserthis
sans point (.) Car ce sont les règles de java (la syntaxe).En résumé.
this
sur une variable d'instance dans une méthode indique que la variable d'instance appartient au paramètre implicite ou qu'il s'agit d'une variable d'instance du paramètre implicite.this
ne peut pas être utilisé sans un point (.) ceci est syntaxiquement invalidethis
peut également être utilisé pour faire la distinction entre les variables locales et les variables globales qui ont le même nomthis
mot de réserve s'applique également aux méthodes, pour indiquer qu'une méthode appartient à un objet particulier.la source
Les variables d'instance sont communes à chaque objet que vous créez. disons, il y a deux variables d'instance
si vous avez remarqué le code ci-dessus, nous avons initié trois objets et trois objets appellent la méthode SetMyInstanceValues. Comment pensez-vous que JVM attribue correctement les valeurs de chaque objet? il y a l'astuce, JVM ne verra pas ce code comme il est montré ci-dessus. au lieu de cela, il verra comme ci-dessous le code;
la source
(Je sais que je suis en retard mais chut je suis le sournois que tu ne m'as jamais vu)
Le mot - clé this dans la plupart des langages de programmation orientés objet, sinon tous, signifie qu'il s'agit d'une référence vers l'instance d'objet actuelle de cette classe. C'est essentiellement la même chose que d'appeler cet objet depuis l'extérieur de la méthode par son nom. Cela n'avait probablement aucun sens, alors je vais élaborer:
En dehors de la classe, pour appeler quelque chose dans cette instance de l'objet, par exemple, disons que vous avez un objet appelé objet et que vous souhaitez obtenir un champ que vous devez utiliser
Supposons par exemple que vous essayez d'accéder à object.field depuis l'intérieur de votre classe, par exemple votre constructeur, vous pouvez utiliser
Le mot clé this remplace essentiellement le mot clé de nom d'objet lorsqu'il est appelé à l'intérieur de la classe. Il n'y a généralement pas beaucoup de raison de le faire en dehors du fait que vous avez deux variables du même nom dont l'une étant un champ de la classe et l'autre étant simplement une variable à l'intérieur d'une méthode, cela aide à déchiffrer entre les deux . Par exemple, si vous avez ceci: (Hah, compris? Ceci ? Hehe .... juste moi? Ok: (je vais partir maintenant)
Cela poserait des problèmes, le compilateur ne serait pas en mesure de connaître la différence entre la variable Name définie dans les paramètres du constructeur et la variable Name à l'intérieur des déclarations de champ de votre classe, donc il affecterait à la place le paramètre Name à .. .. la valeur du paramètre Name qui ne fait rien de bénéfique et n'a littéralement aucun but. C'est un problème courant que font la plupart des nouveaux programmes et dont j'ai également été victime. Quoi qu'il en soit, la bonne façon de définir ce paramètre serait d'utiliser:
De cette façon, le compilateur sait que la variable Name que vous essayez d'attribuer fait partie de la classe et non de la méthode et l'affecte correctement, ce qui signifie qu'il affecte le champ Name à tout ce que vous mettez dans le constructeur.
Pour résumer, il fait essentiellement référence à un champ de l'instance d'objet de la classe sur laquelle vous travaillez, d'où le mot-clé "this", signifiant son cet objet, ou cette instance. C'est une bonne pratique de l'utiliser lors de l'appel d'un champ de votre classe plutôt que d'utiliser simplement le nom pour éviter d'éventuels bogues difficiles à trouver car le compilateur s'exécute juste dessus.
la source
Une recherche rapide sur Google a donné ce résultat: http://xahlee.org/java-a-day/this.html
À peu près, le mot-clé "this" est une référence à l'objet courant (lui-même).
la source
this
est une référence à l'objet actuel: http://download.oracle.com/javase/tutorial/java/javaOO/thiskey.htmlla source
cela peut être utilisé dans une méthode ou un constructeur.
Il renvoie la référence à l'objet courant.
la source
Cela fait référence à l'objet dans lequel vous vous trouvez en ce moment. En d'autres termes, cela fait référence à l'objet récepteur. Vous l'utilisez pour clarifier à quelle variable vous faites référence. Page Java_whitepaper: 37
Dans l'exemple de code ci-dessus, this.x / this.y fait référence à la classe actuelle qui est des variables de classe Point x et y où (double x, double y) sont des valeurs doubles transmises par une classe différente pour affecter des valeurs à la classe actuelle.
la source
J'étais également à la recherche de la même réponse et je ne pouvais pas comprendre clairement le concept. Mais finalement je l'ai compris à partir de ce lien
c'est un mot-clé en Java. Qui peut être utilisé dans une méthode ou un constructeur de classe. Cela fonctionne comme une référence à un objet courant dont la méthode ou le constructeur est appelé. ce mot clé peut être utilisé pour faire référence à n'importe quel membre de l'objet courant à partir d'une méthode d'instance ou d'un constructeur.
Consultez les exemples dans le lien pour une compréhension claire
la source
Si les variables d'instance sont les mêmes que les variables déclarées dans le constructeur, nous utilisons "this" pour affecter des données.
J'espère que cela t'aides.
la source
En Java, "ceci" est une variable prédéfinie. Si nous utilisons "this" dans la méthode, cela signifie que nous obtenons la référence (adresse) de l'objet en cours d'exécution. À titre d'exemple.
this.age ---> âge de l'objet en cours d'exécution.
la source
J'aimerais partager ce que j'ai compris de ce mot-clé. Ce mot-clé a 6 utilisations en java comme suit: -
1. Il peut être utilisé pour faire référence à la variable de classe actuelle. Comprenons avec un code. *
Comprenons le problème si nous n'utilisons pas ce mot-clé par l'exemple ci-dessous:
Production:-
Dans l'exemple ci-dessus, les paramètres (arguments formels) et les variables d'instance sont identiques. Nous utilisons donc ce mot-clé pour distinguer la variable locale et la variable d'instance.
production:
2. Pour appeler la méthode de classe actuelle.
Production:
3. pour appeler le constructeur de classe actuel. Il est utilisé pour le chaînage des constructeurs.
Production:
4. à passer comme argument dans la méthode.
Production:
5. passer en argument dans l'appel du constructeur
Production:-
6. pour renvoyer l'instance de classe actuelle
Production:-
la source