Bonjour, à tous.
J'ai un petite question et je voudrais savoir sur un plan technique, quelle est la différence entre une classe anonyme, une classe interne. Et aussi quels sont les cas d'utilisation.
Merci
Bonjour, à tous.
J'ai un petite question et je voudrais savoir sur un plan technique, quelle est la différence entre une classe anonyme, une classe interne. Et aussi quels sont les cas d'utilisation.
Merci
Salut,
Il y a deux différences :Sinon pour tout le reste il n'y a aucune autre différence, puisque les classes anonymes sont des classes internes...
- les classes anonymes n'ont pas de nom
- les classes anonymes ne peuvent qu'hériter d'une classe ou implémenter UNE interface.
Quand à l'utilisation, on utilisera des classes internes lorsqu'on doit l'utiliser à plusieurs endroit de la classe, ou une classe anonymes si son rôle est restreint (par exemple pour la déclaration des listeners).
a++
Ca veut dire que tu peux récupérer la référence sur une classe anonyme ???Envoyé par adiGuba
Heu... OuiEnvoyé par thibaut
Tu peux manipuler une instance de classe anonymes comme n'importe quelle autre instance, si ce n'est que tu ne la manipules que selon le type qu'elle hérite/implémente :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Runnable ref = new Runnable() { public void run() { // code ici } }; ref.run();
Oui, bien sûr :Envoyé par thibaut
La seule petite différence entre les classes internes et les classes anonymes est qu'on utilise ces dernières lorsqu'on ne veut instancier une classe interne qu'une seule fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Object obj = new Interface() { [...] };
Mais en fait, il n'y a pas de vraiment différence. Ainsi, ceci :
est équivalent à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 private class Exemple { [...] }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private Exemple getExemple() { return new Exemple() { [...] }; }
Autre petite difference, tu peux declarer une classe interne static ce qui n'est pas possible avec une anonyme.
Si tu declares une classe interne static, elle ne depend plus d'une instance particuliere mais se comporte comme une classe classique. tu ne peux plus acceder par exemple aux membres prives de la classe contenant la declaration.
Bulbo![]()
Alors quel est l'intérêt de déclarer une classe interne statique plutôt qu'une classe externe ??Envoyé par bulbo
Partager