如何在java中的静态上下文中定义成员接口?

时间:2017-03-13 08:02:11

标签: java interface static

  

成员接口只能在顶级类中定义   接口或静态上下文。

案例A:顶级课程中的界面运作良好

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();
    }

}

案例B:界面内的界面运作良好。

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

案例C: 我知道为什么有人会在静态上下文中定义接口,这听起来很愚蠢。但是当我尝试在静态上下文中定义接口时,它给出了相同的错误消息。

package multiplei.interfaces.test;

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

}}

但第5行给出了以下错误消息"The member interface Foo can only be defined inside a top-level class or interface or in a static context."请帮我解决这个问题如果可以在静态上下文中定义接口,那么如何?

2 个答案:

答案 0 :(得分:4)

您无法在方法中定义接口。

我认为错误消息所指的场景是在内部类中定义一个接口(可以这样做,但只有当它是static内部类时):

class A{
   static class X{
     interface Y{}
   }
}

答案 1 :(得分:0)

对于接口,嵌套接口和成员接口都是同一件事(与成员类相反)。而且,成员接口是被另一个类或另一个接口直接包围的接口。因此,本地接口不存在。