classes anonymes en Java sont des classes sans nom, idéales pour définir et instancier des implémentations de classes ou d'interfaces sur place, sans avoir besoin de fichiers supplémentaires. Son caractère à usage unique empêche sa réutilisation. Contrairement aux classes locales (déclarations), les classes anonymes sont des expressions qui génèrent un seul objet, attribuable à une variable.
Ils sont particulièrement utiles lorsqu'une classe n'est utilisée qu'une seule fois, par exemple lors de la définition d'une méthode spécifique d'une interface ou d'une classe abstraite. Son application est fréquente en Java Swing avec des fonctions event listeners
ou lambda (fonctions fléchées).
Comme fait curieux, le compilateur Java leur attribue un nom automatique (par exemple ClaseContenedora.class
), formé par le nom de la classe contenant et un numéro qui indique sa position.
Syntaxe :
Étant une expression, sa syntaxe ressemble à l'invocation d'un constructeur, mais à la place, elle contient un bloc de code qui définit la structure de la classe :
ClaseOInterfaz nombreVariable = new ClaseOInterfaz() { // Cuerpo de la clase anónima };
Les composants clés sont :
- L'opérateur
new
. - Le nom de la classe à étendre ou l'interface à implémenter.
- Parenthèses avec les arguments du constructeur (si vous en avez), comme lors de l'instanciation d'une classe normale. Dans les interfaces, les parenthèses sont vides.
- Clés qui verrouillent le corps de la classe.
- Il est déclaré et instancié sur une seule ligne, stocké dans une variable.
Types de cours anonymes :
- Extension d'un cours.
- Extension d'une classe abstraite.
- Mise en place d'une interface.
- Argument d'une méthode.
Exemples :
1. Prolongation d'un cours :
public class Carro { public void tipoMotor() { System.out.println("Motor de combustión interna"); } } public class Main { public static void main(String[] args) { Carro carroCombustion = new Carro(); Carro carroElectrico = new Carro() { @Override public void tipoMotor() { System.out.println("Motor eléctrico"); } }; carroCombustion.tipoMotor(); // Motor de combustión interna carroElectrico.tipoMotor(); // Motor eléctrico } }
2. Extension d'une classe abstraite :
public abstract class ConexionBD { public abstract void obtenerConexion(); } public class Main { public static void main(String[] args) { ConexionBD conexionMySQL = new ConexionBD() { @Override public void obtenerConexion() { System.out.println("Conexión a MySQL"); } }; ConexionBD conexionPostgreSQL = new ConexionBD() { @Override public void obtenerConexion() { System.out.println("Conexión a PostgreSQL"); } }; conexionMySQL.obtenerConexion(); // Conexión a MySQL conexionPostgreSQL.obtenerConexion(); // Conexión a PostgreSQL } }
3. Mise en place d'une interface :
import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numeros = Arrays.asList(5, 10, 56, 3, 2, 1, 0); numeros.sort(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } }); System.out.println(numeros); // [56, 10, 5, 3, 2, 1, 0] } }
4. Argument d'une méthode :
public class Main { public static void main(String[] args) { Thread hilo = new Thread(new Runnable() { @Override public void run() { while (true) { System.out.println("Hola, soy un hilo"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }); hilo.start(); } }
Avantages :
- Création d'objets uniquement lorsqu'ils sont nécessaires.
- Modifier le comportement des classes ou des interfaces sans sous-classes.
- Code plus concis et lisible.
- Gain de temps en évitant les fichiers supplémentaires.
Portée :
Similaire aux classes normales, avec accès aux variables locales de la portée du conteneur, avec les restrictions de ne pas pouvoir déclarer d'initialiseurs ou d'interfaces statiques, et la limitation de l'accès aux variables locales non finales ou effectivement finales.
Conclusion :
Les classes anonymes sont un outil puissant et polyvalent en Java, utile pour des implémentations uniques et concises. Son utilisation, bien que parfois implicite, simplifie le code et améliore l'efficacité. Pour plus d'informations, consultez la documentation Java officielle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Cet article analyse les quatre premiers cadres JavaScript (React, Angular, Vue, Svelte) en 2025, en comparant leurs performances, leur évolutivité et leurs perspectives d'avenir. Alors que tous restent dominants en raison de fortes communautés et écosystèmes, leur populaire relatif

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

Node.js 20 améliore considérablement les performances via des améliorations du moteur V8, notamment la collecte des ordures et les E / S plus rapides. Les nouvelles fonctionnalités incluent une meilleure prise en charge de Webassembly et des outils de débogage raffinés, augmentant la productivité des développeurs et la vitesse d'application.

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA

Iceberg, un format de table ouverte pour les grands ensembles de données analytiques, améliore les performances et l'évolutivité du lac Data. Il aborde les limites du parquet / orc par le biais de la gestion interne des métadonnées, permettant une évolution efficace du schéma, un voyage dans le temps, un W simultanément

Cet article aborde la vulnérabilité CVE-2022-1471 dans SnakeyAml, un défaut critique permettant l'exécution du code distant. Il détaille comment la mise à niveau des applications de démarrage de printemps vers SnakeyAml 1.33 ou ultérieurement atténue ce risque, en soulignant cette mise à jour de dépendance

Cet article explore l'intégration de la programmation fonctionnelle dans Java à l'aide d'expressions Lambda, de flux API, de références de méthode et facultatif. Il met en évidence des avantages tels que l'amélioration de la lisibilité au code et de la maintenabilité grâce à la concision et à l'immuabilité

L'article discute de l'utilisation de Maven et Gradle pour la gestion de projet Java, la construction de l'automatisation et la résolution de dépendance, en comparant leurs approches et leurs stratégies d'optimisation.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Dreamweaver CS6
Outils de développement Web visuel

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire
