【发布时间】:2012-01-12 13:31:42
【问题描述】:
我正在阅读Map.Entry 接口,当我注意到它是static 接口时。我不太明白什么是静态接口,它与常规接口有什么不同?
public static interface Map.Entry<K,V>
这是接口的定义。此处的文档:Map.Entry<K,V>。
【问题讨论】:
我正在阅读Map.Entry 接口,当我注意到它是static 接口时。我不太明白什么是静态接口,它与常规接口有什么不同?
public static interface Map.Entry<K,V>
这是接口的定义。此处的文档:Map.Entry<K,V>。
【问题讨论】:
我很好奇它不是内部接口的情况。
static 修饰符只允许在嵌套类或接口上使用。在您的示例中,Entry 嵌套在 Map 接口内。
对于接口,static 修饰符实际上是可选的。这种区别对于接口没有意义,因为它们不包含无论如何都可以访问外部this 的代码。
【讨论】:
static 表示该类没有对外部类的隐式引用。
静态内部接口与内部接口相同,所有访问规则与内部静态类相同。因此,只有当您可以访问其父类/接口时,才能访问内部接口。在以下情况下,您只能从接口 A 的包访问接口 B,因为 A 具有默认访问修饰符。顺便说一句:接口 B 可以是静态的,也可以不是。
interface A {
void testA();
public interface B {
void testB();
}
}
【讨论】: