2012-06-29 4 views
1

J'ai vu un code ayant passé le mot-clé this en tant que paramètre d'entrée. Par exemple:Passage en tant que paramètre

getContainer(this); 

Que signifie le mot-clé this? J'ai entendu dire qu'il se réfère à une instance de la classe elle-même (ou quelque chose du genre), mais comment cela fonctionne-t-il?

+1

Ceci est un argument et non un paramètre. – Pavel

Répondre

1

this fait référence à l'instance en cours sur la méthode a été invoquée,

Il passe la référence à l'instance en cours d'invoquer cette méthode membre

class MyRunnable implements Runnable { 
    Thread t; 
    public MyRunnable() { 
     this.t = new Thread(this); //here it passes reference to current instance of `Runnable` 
    } 

    public void run() { 

    } 
} 
-1

En Java, nous avons des classes et créer des instances (objets) de ces classes. Ainsi, lorsque l'objet doit pointer ou se référencer lui-même, le ce mot-clé est utilisé.

2

From 15.8.3 of the java specification:

Le mot-clé cela peut être utilisé que dans le corps d'une méthode d'instance, exemple initialiseur ou constructeur, ou dans le initialiseur d'une variable d'instance d'une classe. Si elle apparaît ailleurs, une erreur de compilation se produit. Lorsqu'il est utilisé en tant qu'expression primaire, le mot-clé indique une valeur qui est une référence à l'objet pour dont la méthode d'instance a été appelée (§15.12), ou à l'objet construit. Le type de ceci est la classe C dans laquelle se produit le mot-clé . Au moment de l'exécution, la classe de l'objet réel visé à peut être la classe C ou une sous-classe de C.

[...]

Le mot-clé this est également utilisé dans un constructeur explicite spécial invocation instruction, qui peut apparaître au début d'un corps de constructeur (§8.8.7).

Alors oui, une classe peut utiliser le mot-clé this pour se référer à elle-même. Le mot clé this est également requis lorsqu'une variable locale dans une méthode porte le même nom qu'une variable de membre de classe, afin de les distinguer les deux.

0

this peut également être passé pour passer l'instance de la classe appelante à la classe appelée. par exemple

public class Caller{ 
     public void callerClassMethod1(){ 
      new Called(this). 
     } 

     public void callerClassMethod2(){ 
     } 
    } 

class Called{ 
    private Caller caller; 
    public Called(Caller caller){ 
     this.caller=caller; 
    } 
    public void calledClassMethod1(){ 
     //.... Do something before 
     caller.callerClassMethod2(); 
     //..... Do something after   

    } 
} 

De cette façon, vous pouvez séparer les responsabilités des 2 classes et en même temps les garder couplés.

1

Mot-clé this en Java est une variable de référence qui fait référence à l'objet actuel. Il peut être utilisé pour faire référence à la variable d'instance de classe Il peut être utilisé pour appeler ou initier le constructeur de classe en cours Il peut être passé en argument dans l'appel de méthode Il peut être passé en argument dans l'appel du constructeur Il peut être utilisé pour renvoyer l'instance de classe en cours

this est une référence à l'objet en cours, dont la méthode est appelée. Vous pouvez utiliser le mot-clé this pour éviter les conflits de noms dans la méthode/constructeur de votre instance/objet.

Questions connexes