Oui, vous peut créer à la fois une classe imbriquée ou une classe interne à l'intérieur d'une interface Java (notez que, contrairement à la croyance populaire, il n'existe pas de classe " classe interne statique "Il n'y a pas de classe "intérieure" ni de classe "extérieure" lorsqu'une classe imbriquée est statique, elle ne peut donc pas être "statique intérieure").
Quoi qu'il en soit, ce qui suit se compile bien :
public interface A {
class B {
}
}
Je l'ai vu utilisé pour mettre une sorte de "vérificateur de contrat" directement dans la définition de l'interface (enfin, dans la classe imbriquée dans l'interface, qui peut avoir des méthodes statiques, contrairement à l'interface elle-même, qui ne le peut pas). Cela ressemble à ceci si je me souviens bien.
public interface A {
static class B {
public static boolean verifyState( A a ) {
return (true if object implementing class A looks to be in a valid state)
}
}
}
Notez que je ne me prononce pas sur l'utilité d'une telle chose, je réponds simplement à votre question : c'est possible et c'est un type d'utilisation que j'ai vu.
Maintenant, je ne vais pas commenter l'utilité d'une telle construction et de ce que j'ai vu : Je l'ai vu, mais ce n'est pas une construction très courante.
Nous avons ici une base de code de 200KLOC où cela n'arrive jamais (mais il y a beaucoup d'autres choses que nous considérons comme des mauvaises pratiques qui n'arrivent jamais et que d'autres personnes trouveraient parfaitement normales, donc...).