46 votes

Qu'est-ce qu'une interface statique en Java ?

Je lisais l' Map.Entry , quand j'ai remarqué qu'il s'agissait d'une interface static Je n'ai pas bien compris ce qu'est une interface statique et en quoi est-elle différente d'une interface classique ?

 public static interface Map.Entry<K,V>

C'est la définition de l'interface. Docs ici : Map.Entry<K,V> .

46voto

Jörn Horstmann Points 18118

Je suis curieux de savoir s'il ne s'agit pas d'une interface interne.

Le static n'est autorisé que sur des classes ou des interfaces imbriquées. Dans votre exemple, Entry est imbriqué dans l'interface Map

Pour les interfaces, le static est en fait facultatif. La distinction n'a aucun sens pour les interfaces puisqu'elles ne contiennent aucun code qui pourrait accéder de toute façon aux this externes.

4voto

Stanislav Levental Points 1527

L'interface interne statique et l'interface interne sont les mêmes, toutes les règles d'accès sont les mêmes qu'avec la classe statique interne. Ainsi, l'interface interne ne peut être accessible que si vous avez accès à sa classe/interface parent. Dans le cas ci-dessous, vous n'aurez accès à l'interface B qu'à partir du package de l'interface A, car A a un modificateur d'accès par défaut. BTW : l'interface B peut être statique ou non.

  interface A {
    void testA();
    public interface B {
        void testB();
    }
 } 

0voto

Mike Keskinov Points 2890

Enfin, même Android Studio indique que l'utilisation de statique avec une interface interne n'est pas nécessaire :

entrez la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X