En Java, les classes imbriquées peuvent être l'une static
ou l' autre . S'ils le sont static
, ils ne contiennent pas de référence au pointeur de l'instance contenant (ils ne sont plus appelés classes internes, ils sont appelés classes imbriquées).
Oublier de créer une classe imbriquée static
alors qu'elle n'a pas besoin de cette référence peut entraîner des problèmes de récupération de place ou d'analyse d'échappement.
Est-il possible de créer également une classe interne anonyme static
? Ou le compilateur le comprend-il automatiquement (ce qu'il pourrait, car il ne peut pas y avoir de sous-classes)?
Par exemple, si je fais un comparateur anonyme, je n'ai presque jamais besoin de la référence à l'extérieur:
Collections.sort(list, new Comparator<String>(){
int compare(String a, String b){
return a.toUpperCase().compareTo(b.toUpperCase());
}
}
Collections.sort(list, String.CASE_INSENSITIVE_ORDER)
fonctionne depuis Java 2, lire, puisque l'API Collection existe…