黑马程序员技术交流社区

标题: java内部接口 [打印本页]

作者: 周刚    时间: 2012-7-1 14:11
标题: java内部接口
感觉java博大精深啊!
接口还可以有内部接口,当内部接口对外暴露时,外部类还可以实现内部接口。
这时内部接口与外部接口有什么区别吗?有点晕 。。。

bb.jpg (28 KB, 下载次数: 137)

bb.jpg

作者: 杨_扬    时间: 2012-7-1 15:46
说实在的,我看到你提出的这个问题也挺蒙的,Map.Entry常用,我还真没仔细想过你提出的这个问题,呵呵。
网上我看到的一则明确针对内部接口作用的回答,虽然是非官方的,但是还是贴出来供你参考
One good reason to use an inner interface is if its function is directly related to the class it is in. A good example of this is a Listener. If you had a class Foo and you wanted other classes to be able to listen for events on it, you could declare an interface named FooListener, which is ok, but it would probably be more clear to declare an inner interface and have those other classes implement Foo.Listener (an inner class Foo.Event isn't bad along with this).
如果你有一个类Foo和你希望其他类能够监听它的事件,你可以再另外声明一个叫FooListener的接口,需要监听Foo类的的那个类就必须要实现这个接口,但如果声明为内部接口可能会更加明确。
我自己的理解,有如下一种情况,你设计了一个抽象类,里面有属性,有方法还有抽象方法。正如你所知的,抽象类是不能被实例化的,这个时候,你又要在一个类中包含抽象方法,又要这个类被实例化,那怎么办呢?就只能使用内部接口把这些抽象类封装起来。
那么,使用了内部接口的类具备如下特点:
1. 可以直接被实例化
2. 其子类如果不明确声明implements内部接口,可以不用实现内部接口
显然这种做法的实际使用意义并不大我个人也感觉这只是为了使得语义更加明确罢了
作者: Coolman    时间: 2015-9-21 21:16
Map 集合的遍历,第二种方式利用 Set<Map.Entry<K, V>> entrySet()




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2