什么是java中的静态接口?

时间:2011-12-04 10:21:40

标签: java interface

当我注意到它是一个'静态'界面时,我正在阅读Map.Entry界面。我不太了解静态接口是什么,它与常规接口有什么不同?

public static interface Map.Entry<K,V>

这是界面的定义。文档:http://docs.oracle.com/javase/6/docs/api/java/util/Map.Entry.html

3 个答案:

答案 0 :(得分:35)

  

当它不是内部接口时,我很好奇。

static修饰符仅允许嵌套的类或接口使用。在您的示例中,Entry嵌套在Map接口中。

对于接口,static修饰符实际上是可选的。这种区别对接口毫无意义,因为它们不包含任何可以访问外部this的代码。

答案 1 :(得分:4)

静态内部接口和内部接口是相同的,所有访问规则都与内部静态类相同。因此,只有在您可以访问其父类/接口时才能访问内部接口。在下面的情况下,您将只能从接口A的包中访问接口B,因为A具有默认访问修饰符。 BTW:接口B可以是静态的。

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

答案 2 :(得分:0)

最后,甚至Android Studio都表示不需要将 static 与内部界面一起使用:

enter image description here