什么是内部接口

内部接口也称为嵌套接口,即在一个接口内部定义另一个接口。举个例子,Entry接口定义在Map接口里面,如下代码:

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

为什么要使用内部接口

如下是一些强有力的理由:

  • 一种对那些在同一个地方使用的接口进行逻辑上分组;
  • 封装思想的体现;
  • 嵌套接口可以增强代码的易读性和可维护性;

在Java标准库中使用内部接口的一个例子是java.util.Map和Java.util.Map.Entry。这里java.util.Map同样被当成命名空间使用。Entry并不属于全局作用域范围.

内部类如何工作

为了弄清楚内部接口是如何工作的,我们可以拿它与内部类作比较。内部类可以被认为是一个外部类内部定义的一个常规方法。因为一个方法可以被声明为静态和非静态,类似的内部类也可以被声明为静态和非静态。静态类类似于静态方法,它只能访问外部类的静态成员属性。非静态方法可以访问外部类的所有成员属性。

因为接口是不能实例化的,内部接口只有当它是静态的才有意义。因此,默认情况下,内部接口是静态的,不能你是否手动加了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
}
}

译文链接

http://www.programcreek.com/2013/08/inner-interface-in-java/

最新文章

  1. js分秒必争
  2. Java-条件语句、循环语句练习
  3. CPU工作状态的知识介绍
  4. asp.net 获取当前项目的根目录路径
  5. C++学习之:括号匹配与栈的使用
  6. LC.exe exited with code -1
  7. 【收藏】Linux添加/删除用户和用户组
  8. Xcode Provisioning 路径
  9. [cocos2d-x]屏幕自适应解决的方法
  10. IE6下绝对定位元素和浮动元素并列绝对定位元素消失
  11. 徒手用Java来写个Web服务器和框架吧<第三章:Service的实现和注册>
  12. 设计模式--单例模式(Singleton pattern)及应用
  13. HighCharts之2D柱状图、折线图和饼图的组合图
  14. 关于Allele(等位基因)的理解
  15. 如何获得mysql数据库的所有的列
  16. Day1 《机器学习》第一章学习笔记
  17. springboot~读取自定义配置项
  18. Go语言编程读书笔记:Go channel(1)
  19. Java中最常用的集合类框架之 HashMap
  20. Bootstrap 面板(Panels)

热门文章

  1. iOS学习笔记——触控与手势
  2. EF生成 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义
  3. Bootstrap学习笔记系列5------Bootstrap图片显示
  4. iTextSharp快速使用指南
  5. PHP程序员7小时学会Kotlin 第二小时
  6. JPHP最新进展 v0.6
  7. JavaScript的DOM操作。Window.document对象
  8. 第 15 章 CSS 文本样式[上]
  9. 【转】编译Lua5.3.0的iOS静态库
  10. this指向问题