Comment est-il utile d'utiliser la classe anonyme si chaque fois que nous devons définir une classe en invoquant un constructeur d'une interface. Ne vaut-il pas mieux utiliser un type générique à la place?En quoi une classe anonyme est-elle utile en Java?
Répondre
Les classes anonymes sont fréquemment utilisées dans les applications GUI. Lorsque vous avez seulement besoin de déclarer et créer un objet d'une classe en même temps, cela peut rendre le code plus précis.
Voici un exemple:
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
Les classes anonymes ne sont pas définies à chaque fois qu'elles sont instanciées. Ils sont compilés en bytecode, tout comme les autres classes, avec un nom par exemple. MyEnclosingClass$1
. Voir ce post pour plus d'informations: How are anonymous classes compiled in Java?
Tangentiellement, la réflexion peut être utilisée pour les identifier à l'exécution en utilisant Class.isAnonymousClass()
.
Cela dépend de la situation; dans certains cas, il vaudra mieux utiliser une classe anonyme, et dans d'autres, il vaudra mieux utiliser une classe concrète qui implémente l'interface requise.
Si vous pensez que vous devrez fournir la même définition de classe anonyme à plusieurs reprises, cela vous fera probablement gagner du temps pour transmettre une instance d'une classe concrète qui implémente l'interface requise.
Le langage Java fournit une syntaxe de classe anonyme pour plus de commodité.
Pour vous donner un avant-goût, voici un rapide example de ma propre expérience: Avoir des listes soutenues par des fonctions.
En général, les classes anonymes ont (entre autres) les utilisations suivantes:
- Supposons que vous voulez avoir un objet (une instance, pas une classe) dont le comportement dépend d'une valeur disponible lors de l'exécution. Sans les classes anonymes, vous pouvez le faire en définissant des champs (ou en appelant des méthodes de changement d'état) - mais vous ne pouvez pas avoir un code différent en cours d'exécution. Maintenant, vrai, vous pourriez avoir un tas de
switch()
instructions dans le code de la méthode de votre classe - mais cela déconnecte complètement la définition du comportement de son contexte. Une autre façon de procéder est d'utiliser une sous-classe nommée, mais c'est beaucoup de code, et cela crée un nom que vous ne voulez pas vraiment exister. - Functional Programming! Jusqu'à Java 8 arrive, les fonctions anonymes sont à peu près le seul moyen de transmettre des fonctions, qui ne sont pas first-class citizens en Java. Avec ceux-ci, vous pouvez effectuer de nombreux tours soignés et élégants comme mon exemple ci-dessus.
- 1. Vide classe anonyme anonyme en Java
- 2. Classe interne anonyme Java
- 3. Comment redéfinir lambda classe anonyme en java
- 4. En quoi la segmentation est-elle utile?
- 5. Sérialisation d'une classe anonyme en Java
- 6. Classe interne publique anonyme en Java
- 7. problème de classe interne anonyme en Java
- 8. Comment créer une nouvelle instance de classe anonyme en Java
- 9. Comment réparer une classe interne anonyme en java
- 10. classe Java anonyme
- 11. classe anonyme en F #
- 12. Comment convertir une classe anonyme en json?
- 13. En quoi le code Java suivant est-il utile, dans le domaine de l'informatique autonome?
- 14. Java Traitement, en utilisant une fonction anonyme
- 15. Java: Obtenir super classe d'une classe anonyme
- 16. NullPointerException en classe interne anonyme
- 17. Classe anonyme transformée en classe interne
- 18. Éviter l'extension d'une classe de façon anonyme en Java
- 19. Equivalent de la classe anonyme de Java en C#?
- 20. Gestion des exceptions pour la classe interne anonyme en Java
- 21. Pourquoi est-il utile d'avoir une collection synchronisée en Java?
- 22. Java - Comment jeter exception en dehors d'une classe anonyme
- 23. passage de paramètre à la classe anonyme en Java
- 24. Annoter une classe interne anonyme
- 25. En quoi la méthode de classe de Django est-elle utile?
- 26. Comment obtenir une référence à la classe englobante d'une classe interne anonyme en Java?
- 27. Comment ajouter @SerialVersionUID à une classe anonyme?
- 28. classe Anonymous en Java
- 29. A quoi ressemble Java en mémoire
- 30. Référence une classe anonyme?
Hmm, j'ai peut-être mal compris la question. –