Java中的内部接口

摘要:
也就是说,在一个接口内定义了另一个接口。Entry界面在Map界面中定义。在Java标准库中使用内部接口的一个例子是Java。util。地图和Java。util。地图进入条目不属于全局范围。为了了解内部接口的工作原理,它只能访问外部类的静态成员属性。非静态方法可以访问外部类的所有成员属性。内部接口只有在静态时才有意义。内部接口是静态的。
什么是内部接口

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

public interface Map {
    interface Entry{
        int getKey();
    }
    void clear();
}
为什么要使用内部接口

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

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

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

内部类如何工作

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

Java中的内部接口第1张

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

免责声明:文章转载自《Java中的内部接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇php Redis函数使用总结(string,hash,list, set , sort set )statement 、prepareStatement的用法和解释下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android平台下的JNI开发

JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程。要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Eclipse下进行C/C++开发了。 其实JNI的原理很容易理解,其本质就是在Java层定义一个接口,同时在C层用C/C++代码实现该接口的功能并编译成动态链接...

设计模式七大原则——接口隔离原则

一、基本介绍   一个类对另一个类的依赖应该建立在最小的接口上 二、应用实例    分析以上类图:   首先有四个类,分别是A,B,C,D,以及一个接口Interface1,其中有五个抽象方法,分别是operation1,operation2,operation3,operation4,operation5   类B和类D都会实现Interface1接口...

第6章 RPC之道

 6.1 认识RPC 分布式、微服务的架构思维中都不能缺少 RPC 的影子 RPC(Remote Procedure Call)远程过程调用。通过网络在跨进程的两台服务器之间传输信息,我们使用的时候不用关心网络底层的实现,通过RPC调用远程服务就像本地调用系统内部方法一样方便。 在 OSI 网络通信模型中,RPC跨越了传输层和应用层,使开发分布式应用程序变...

java~jackson实现接口的反序列化

jackson是springboot中集成的序列化方式,是默认的json序列化方式,当然你可以使用其它的序列化工具代替它,不过今天我们还是说一下它,使用jackson进行序列化一个类,然后再把它的JSON字符反序列化为它的接口对象。 现实 这种方式默认是不行的,因为接口不能被自动实例化 使用redisTelmplete时,如果使用objectMapper...

14.4 Set集合

1、概述Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合,但Set集合中不能包含重复对象。Set集合由Set接口和Set接口的实现类组成。Set接口继承了Collection接口,因此包含Collection接口的所有方法。2、Set解耦常用的实现类有HashSet类与TreeSet类   a、HashSet类实现Set接口,由哈希表(实际上...

MII、RMII、GMII接口的详细介绍

概述:         MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和一个MAC和PHY之间的管理接口。     数据接口包括分别用于发送器和接收器的两条独立信道,每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。...