En effet, les mots-clés static et abstract ne peuvent normalement pas être utilisés ensemble en Java. Cependant, dans l'exemple que vous avez présenté, la classe StaticNested est une classe interne statique abstraite de la classe Enclosing.
Cela signifie que la classe StaticNested est une classe interne qui peut être instanciée sans avoir besoin d'instancier la classe Enclosing elle-même. De plus, la classe StaticNested est abstraite, ce qui signifie qu'elle ne peut pas être instanciée directement, mais doit plutôt être sous-classée et implémentée.
Dans ce scénario, la classe StaticNested peut être utilisée pour encapsuler une fonctionnalité spécifique qui peut être étendue et implémentée de différentes manières par des classes externes. Par exemple, si la classe StaticNested avait une méthode run(), les sous-classes pourraient implémenter cette méthode de différentes manières pour répondre à leurs besoins spécifiques.
En résumé, bien que les mots-clés static et abstract ne puissent normalement pas coexister en Java, ils peuvent être utilisés ensemble dans le cadre de classes internes statiques abstraites pour encapsuler des fonctionnalités spécifiques et permettre une personnalisation ultérieure par des sous-classes.