2016-02-18 2 views
0

Cela pourrait bien être une question très noob mais je suis un, donc ce serait génial si vous pouviez expliquer d'une manière facile à comprendre pour moi.'this' dans le contexte de addActionListener

donc je suivais avec un tutoriel swing et fait face à ce

nameOfButton.addActionListener(this); 

donc je sais ce que cela est quand il est utilisé dans le contexte du constructeur car il appelle à nouveau lui-même.

Aussi je sais ce qu'il fait en termes de relation entre les paramètres de la méthode et les variables de la classe.

Mais je suis curieux de savoir à quoi cela se réfère dans un tel cas. Est-ce qu'il se réfère au bouton lui-même? cela signifie-t-il qu'il crée un écouteur d'action ou se réfère-t-il en quelque sorte à la méthode dans laquelle il se trouve? Merci

+0

'this' fait référence à la classe actuelle, qui (suppose que le code compile) implémente' ActionListener'. Jetez un coup d'œil à [Utilisation de ce mot-clé] (https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html) pour plus de détails – MadProgrammer

+0

Cette [réponse] (http://stackoverflow.com/ a/6520977/4924793) et [celui-ci] (http://stackoverflow.com/a/3572553/4924793) pourraient vous être utiles. – Emzor

Répondre

2

La méthode addActionListener fait partie d'une classe Listener, je suppose. Si vous utilisez cette méthode et qu'elle n'est pas statique, cela signifie qu'un objet écouteur de cette classe a été instancié et a accédé à la méthode. La référence "ceci" est à cet objet. Il est associé à un bouton à l'intérieur de la classe Il réside dans

Ceci est un exemple simplifié d'un code que j'ai écrit pour un projet.

public class Foo { 

private Company company; 

public Foo login(String name) { 
    name = name.toLowerCase(); 
    company = companyDAO.getCompanyByName(name); 
    return this; 
} 

Comme vous pouvez le voir, ma classe Foo a un attribut et quand un objet Foo dans main() appelle la méthode login: Foo f = new Foo().login("someName"), il recevra lui-même mais son attribut - "compagnie" - aura une valeur unique. Vous pourriez l'écrire d'une autre manière, mais c'est plus facile.

+0

Merci pour cela mais pourquoi devez-vous passer un paramètre d'objet de lui-même lors de l'exécution de addActionListener? – forJ

+1

J'ai ajouté un exemple de code qui utilise 'this' de la même manière. Je ne sais pas quelle est la logique du code que vous avez ajouté, donc je ne peux pas le dire. – MaxG

0

Cette instruction est dans une méthode d'une classe. Appelons la classe Foo. this référence l'instance Foo utilisée pour appeler la méthode.