Quel est le cas d'utilisation et l'avantage de la classe anonyme en java? [dupliquer]


Cette question a déjà une réponse ici:

Ce que je sais sur la classe anonyme , c'est que lorsque vous avez une classe ou une interface ,et que seule une partie de votre code doit implémenter ou remplacer une classe ou une interface de manière anonyme, cela augmente la lisibilité du programme . Mais je suis un peu Peu confus supposons qu'à l'avenir vous devez implémenter la même interface pour une classe différente , donc dans ce cas , vous devez refactoriser votre classe précédente, alors y a-t-il un autre advanrage de classe anonyme ?(Est-il améliore les performances ?)

Author: Mohammad Faizan, 2016-07-15

1 answers

Qu'est-ce que cela signifie?

Une classe anonyme est exactement ce que son nom implique it elle n'a pas de nom. Il combine la classe declaration et la création d'un instance de la classe en une seule étape. Étant donné que les classes anonymes n'ont pas de nom, les objets ne peuvent pas être instanciés à partir de l'extérieur de la classe dans laquelle la classe anonyme est définie. En fait, un objet anonyme ne peut être instancié qu'à partir de la même portée dans laquelle il est défini.

Pourquoi utiliser un anonyme de classe?

Les classes anonymes peuvent être des économiseurs de temps et réduire le nombre de .java fichiers nécessaires pour définir une application. Vous pouvez avoir une classe qui n'est utilisée que dans une situation spécifique telle que Comparator. Cela permet une création "à la volée" d'un objet.

Vous pouvez trouver que vous préférez utiliser des classes anonymes; beaucoup de gens les utilisent largement pour implémenter listeners sur GUIs.

La syntaxe des définitions de classes Anonymes

Cet exemple montre un définition de classe anonyme pour un comparateur qui est passé à la méthode sort () dans la classe Collections. Supposons qu'aList est une liste valide de données à trier.

Collections.sort (aList, 
    new Comparator () { // implements the IF 
        public int compare (ObjectType o1, ObjectType o2 ) throws ..{ 
            //.... implementation for compare() 
        } // end of compare() 
    } // end of Comparator implementation
); // closed paren for sort() and end of statement semicolon

Règles:

Une classe anonyme doit toujours étendre une super classe ou implémenter une interface mais elle ne peut pas avoir de clause expends ou implements explicite.

Une classe anonyme doit implémenter toutes les méthodes abstraites de la super classe ou de l'interface.

Une classe anonyme utilise toujours le constructeur par défaut de la super classe pour créer une instance.

 2
Author: Mehraj Malik, 2016-07-15 04:41:03