Comment définir une interface membre dans un contexte statique en java?


L'interface membre ne peut être définie qu'à l'intérieur d'une classe de interface ou dans un contexte statique.

Cas A: L'interface dans une classe de niveau supérieur fonctionne parfaitement

package multiplei.interfaces.test;

public class InterfaceBetweenClass {

    interface Foo {
        void show();
    }

    class InnerClass implements Foo{
        public void show(){
            System.out.println("Inner Class implements Foo");
        }
    }

    public static void main(String[] args) {
        new InterfaceBetweenClass().new InnerClass().show();
    }

}

Cas B: L'interface dans une interface fonctionne bien.

public interface Creatable {
    interface Foo{
        void show();
    }}

Cas C: je sais que cela semble stupide que pourquoi serait-on définir une interface dans un contexte statique. Mais cela me donne le même message d'erreur lorsque j'essaie de définir l'interface dans le contexte statique.

package multiplei.interfaces.test;

public class InterfaceBetweenClass {
    public static void main(String[] args) {
        interface Foo {  //Line 5
            void show(); 
        }
    }

}}

Mais la ligne numéro 5 me donne le message d'erreur suivant "The member interface Foo can only be defined inside a top-level class or interface or in a static context." Veuillez m'aider avec cela Si une interface peut être définie dans un contexte statique alors comment?

Author: Yati Sawhney, 2017-03-13

1 answers

Vous ne pouvez pas définir d'interfaces dans les méthodes.

Je pense que le scénario auquel le message d'erreur fait référence définit une interface à l'intérieur d'une classe interne (ce qui peut être fait, mais seulement s'il s'agit d'une classe interne static):

class A{
   static class X{
     interface Y{}
   }
}
 4
Author: Thilo, 2017-03-13 08:09:27