Les classes internes anonymes sont des classes internes spéciales en Java qui n'ont pas de nom explicite et sont créées via la nouvelle expression. Elles sont principalement utilisées pour implémenter des interfaces spécifiques ou étendre des classes abstraites et sont utilisées immédiatement après la création. Les modèles de conception de classe interne anonymes courants incluent : Modèle d’adaptateur : convertit une interface en une autre interface. Modèle de stratégie : définition et algorithmes de remplacement. Modèle d'observateur : enregistrez les observateurs et gérez les événements. C'est très utile dans des applications pratiques, telles que le tri d'un TreeSet par longueur de chaîne, la création de threads anonymes, etc.
Classe interne anonyme est un type spécial de classe interne en Java qui n'a pas de nom explicite mais est créé directement à l'aide d'une nouvelle expression. Il est principalement utilisé pour implémenter une interface spécifique ou étendre une classe abstraite spécifique, et est généralement créé dans le corps de la méthode et utilisé immédiatement.
Voici les modèles de conception courants utilisant des classes internes anonymes :
1. Modèle d'adaptateur
Le modèle d'adaptateur utilise des classes internes anonymes pour convertir une interface en une autre interface. Par exemple, le code suivant crée une classe interne anonyme et adapte la classe Adaptee
à l'interface Target
: Adaptee
类适配为 Target
接口:
Target target = new Target() { @Override public void request() { adaptee.specificRequest(); } };
2. 策略模式
策略模式使用匿名内部类来定义算法族,并使其可以互换使用。例如,以下代码创建一个匿名内部类,实现 Comparator
接口比较两个字符串的长度:
Comparator<String> comparator = new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } };
3. 观察者模式
观察者模式使用匿名内部类来注册观察者并处理主题发出的事件。例如,以下代码创建一个匿名内部类,实现 Observer
接口以观察 Subject
Subject subject = new Subject(); Observer observer = new Observer() { @Override public void update(Subject subject) { // 处理主题更新 } }; subject.addObserver(observer);
Le modèle de stratégie utilise l'anonymat. classes internes pour définir une famille d’algorithmes et permettre de les utiliser de manière interchangeable. Par exemple, le code suivant crée une classe interne anonyme qui implémente l'interface Comparator
pour comparer les longueurs de deux chaînes :
Set<String> treeSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } });
3. Modèle d'observateur
Le modèle d'observateur utilise des classes internes anonymes pour. enregistrer les observations et gérer les événements émis par le sujet. Par exemple, le code suivant crée une classe interne anonyme qui implémente l'interface Observer
pour observer les objets Subject
:
new Thread() { @Override public void run() { System.out.println("Hello from thread!"); } }.start();Cas pratique🎜Exemple : Créer un TreeSet avec Comparator 🎜🎜 🎜TreeSet exige que ses éléments soient comparables. Le code suivant utilise une classe interne anonyme pour définir un comparateur personnalisé qui trie les chaînes en fonction de leur longueur : 🎜rrreee🎜🎜 Exemple : Créer un fil de discussion anonyme 🎜🎜🎜Le code suivant utilise une classe interne anonyme pour créer et démarrer un fil de discussion dans lequel il imprime un message : 🎜rrreee
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!