Qu'est-ce que ce type de redéfinition de méthode appelée en Java?
Je suis relativement nouveau à Java et je suis en utilisant une nouvelle API. Je suis tombé sur cette méthode de remplacement et je ne suis pas sûr de ce qui est appelé:
public void exampleMethod() {
Button loginButton = new Button("login"){
public void onSubmit(){
//submit code here
}
};
}
De ce que je comprends, c'est remplacer le onSubmit méthode de la classe Button. Je n'ai jamais rencontré ce type de remplacement avant. Est-il un nom particulier? Je veux lire plus à ce sujet mais je ne le trouve pas. Toutes mes recherches jusqu'à présent résultat régulier de la redéfinition de méthode en créant une nouvelle classe, qui est ce que je suis déjà familier avec.
Je vous en serais reconnaissant si quelqu'un pouvait me diriger dans la bonne direction.
Grâce.
- Bonne question... et c'est le genre de chose qui est très difficile à vérifier dans une référence! +1 Heureusement, comme j'ai tenté de poser la même Q, et il a trouvé votre Q pour moi.
Vous devez vous connecter pour publier un commentaire.
C'est un anonyme intérieur de la classe.
Dans l'exemple ci-dessus, au lieu de créer un
private class
qui s'étendButton
nous créer une sous-classe de Bouton et de fournir la mise en oeuvre de la méthode de remplacement en ligne avec le reste du code.Que cette nouvelle classe est créée à la volée, il n'a pas de nom, donc anonyme. Qu'elle est définie à l'intérieur d'une autre classe, c'est un anonyme intérieure classe.
Il peut être très pratique, surtout pour les
Listener
classes, mais il peut rendre votre code plus difficile à respecter si vous vous emporter et la méthode de la ligne des définitions trop long.C'est un anonyme intérieur de la classe. Fondamentalement, il crée une nouvelle classe qui dérive de celui spécifié (
Button
dans ce cas, si vous pouvez utiliser la même technique pour mettre en œuvre des interfaces) et remplace les méthodes appropriées. Il peut contenir d'autres méthodes, mais ils étaient uniquement disponibles dans cette classe.La classe a accès à la finale des variables locales au sein de la même méthode, et si vous écrivez une méthode d'instance, il a une référence implicite à
this
comme bien (vous pouvez appeler d'autres méthodes dans votre classe "main").C'est un anonyme intérieur de la classe.
Plus d'infos: Les classes anonymes