• 欢迎访问天天编码网站,Java技术、技术书单、开发工具,欢迎加入天天编码
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏天天编码吧
  • 我们的淘宝店铺已经开张了哦,传送门:https://shop145764801.taobao.com/

什么是Java中的内部接口(Inner Interface)

Java基础 tiantian 2523次浏览 0个评论 扫描二维码

Java中不仅具有四种类别的内部类,而且还具有内部接口(inner interface)。内部接口又名内嵌接口(nested interface),这意味着把内部接口定义在另一个接口的内部。这个内嵌接口的用法在JDK中具有不少的使用案例,比如下面这个从JDK中摘取的部分源码。

public interface Map {
interface Entry {
int getKey();
}

void clear();
}

适用场景

内部接口的语法本身是没有太难理解和特殊的地方,难点在于什么时候可以考虑使用内部接口呢?下面,我们简单地总结了几个应该考虑使用内部接口的场景:
1. 把几个经常一起出现,又具有层次关系的接口收集起来。
2. 增强代码的封装性。
3. 有利用写出更可读和更可维护的代码。

对于演示代码,本文建议直接查看JDK中 java.util.Map 和 java.util.Map.Entry 类的源码。此处的 java.util.Map 同时也是作为一个命名空间存在。java.util.Map.Entry 类不是属于全局命名空间,这使得在JDK和其他API中,可以存在多个名为 Entry 的类,但它们都可以有效地与 java.util.Map.Entry 区别开来。我们此处的 java.util.Map.Entry 是只属于 java.util.Map 类的。

使用方法

为了能够弄明白内部接口的工作原理,我们可以把它与内部类做比较。正如我们所知,内部类可以被认为是定义于外部类的一个普通成员,可以是静态的,也可以是非静态的。同样的原理,内部类中也分成了静态内部类和成员内部类。静态内部类就像静态方法,它仅仅可以通过对象的形式访问外部类的静态成员;非静态内部类可以访问外部类的任何成员。

什么是Java中的内部接口(Inner Interface)

我们知道,类(Class)与接口(Interface)之间还是存在着差异的。比如,接口是不能被实例化的,所以,只有静态的内部接口才是有意义的。也正是这个原因,内部接口默认就是静态的,并不需要我们特别指定。

简单示例

Map.java

public interface Map {
interface Entry {
int getKey();
}
void clear();
}

MapImpl.java

public class MapImpl implements Map {
class EntryImpl implements Map.Entry {
public int getKey() {
return 0;
}
}

@Override
public void clear() {
//clear
}

}


天天编码 , 版权所有丨本文标题:什么是Java中的内部接口(Inner Interface)
转载请保留页面地址:http://www.tiantianbianma.com/java-inner-interface.html/
喜欢 (1)
支付宝[多谢打赏]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址