这篇文章介绍一下java中的内部接口
什么是java中的内部接口?
内部接口 就是接口的内部再定义一个接口,例如:
public interface Map { interface Entry{ int getKey(); } void clear(); }
为什么使用内部接口?
有如下几个原因:
- 实现只在一个地方使用的逻辑接口的方式.
- 增强封装.
- 增强代码的可读性与可维护性.
一个内部接口的例子是java标准库中的 java.util.Map
和 Java.util.Map.Entry
. 这里的 java.util.Map同时作为一个namespace. Entry并不属于全局范围i,意味着很多的条目属于Entries 而不是Map的
内部接口怎样工作?
为了说明内部接口怎样工作,我们可以对比嵌套类. 嵌套类可以被视为在外类中声明的一种规则方法。因为一个方法可以声明为静态或非静态的,类似的,嵌套类可以是静态的和非静态的。静态类像静态方法,它只能通过对象访问外部类成员。非静态类可以访问外部类的任何成员。
因为接口不能被实例化,于是内部接口是静态的才有意义。因此,默认的接口是静态的,无论你是否手动添加static
。
一个内部接口的例子?
Map.java
public interface Map { interface Entry{ int getKey(); } void clear(); }
MapImpl.java
public class MapImpl implements Map { class ImplEntry implements Map.Entry{ public int getKey() { return 0; } } @Override public void clear() { //clear } }
Comments