A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周刚 中级黑马   /  2012-7-1 14:11  /  6419 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

感觉java博大精深啊!
接口还可以有内部接口,当内部接口对外暴露时,外部类还可以实现内部接口。
这时内部接口与外部接口有什么区别吗?有点晕 。。。

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

bb.jpg

评分

参与人数 1技术分 +2 收起 理由
刘蕴学 + 2

查看全部评分

2 个回复

倒序浏览
说实在的,我看到你提出的这个问题也挺蒙的,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内部接口,可以不用实现内部接口
显然这种做法的实际使用意义并不大我个人也感觉这只是为了使得语义更加明确罢了

点评

拆成多个独立更好点,如果派生类比较多的话,呵呵  发表于 2012-7-2 11:25

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
Map 集合的遍历,第二种方式利用 Set<Map.Entry<K, V>> entrySet()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马