当前位置: 首页 > news >正文

Java中的内部接口

什么是内部接口

内部接口也称为嵌套接口,即在一个接口内部定义另一个接口。举个例子,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/

 

相关文章:

  • linux gcc 编译动态类库(.so)和静态类库(.a)
  • jQuery学习和知识点总结归纳
  • 如何判断链表是否是回文
  • igraph安装(R/Python)
  • 【学习笔记】屏幕尺寸的信息
  • 在Mac OS X上安装 Ruby运行环境
  • [译]CSS 居中(Center)方法大合集
  • java httpclient使用socks5代理(二)使用socks5代理服务
  • C#:为详情查看界面设计的万用TextBox自定义控件
  • JS --事件
  • Sublime Text 3 关闭自动提示
  • 用verilog模拟DDS产生正弦波信号
  • 第k个元素(模板)
  • 景德镇特色的部门级别与权限
  • swift 字符串创建类
  • 【知识碎片】第三方登录弹窗效果
  • mysql常用命令汇总
  • passportjs 源码分析
  • python学习笔记 - ThreadLocal
  • Spark学习笔记之相关记录
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从0实现一个tiny react(三)生命周期
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 前嗅ForeSpider采集配置界面介绍
  • 学习ES6 变量的解构赋值
  • 移动端 h5开发相关内容总结(三)
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • !!Dom4j 学习笔记
  • #Ubuntu(修改root信息)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (02)vite环境变量配置
  • (11)MATLAB PCA+SVM 人脸识别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (bean配置类的注解开发)学习Spring的第十三天
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (pojstep1.1.2)2654(直叙式模拟)
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计ssm电影分享网站
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)负载均衡,回话保持,cookie
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • 、写入Shellcode到注册表上线
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net framework 4.0中如何 输出 form 的name属性。
  • .Net6 Api Swagger配置