栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java相当于Cocoa委托/ Objective-C非正式协议?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java相当于Cocoa委托/ Objective-C非正式协议?

简短的答案是,Java中没有什么比您想的要近的了,但还有其他选择。委托模式并不难实现,只是不像使用Objective-C那样方便。

“非正式协议”在Objective-C中起作用的原因是该语言支持 category
,它允许您将方法添加到现有类中,而无需对其进行子类化,甚至无需访问源代码。因此,大多数非正式协议都是NSObject上的一个类别。在Java中这显然是不可能的。

Objective-C 2.0选择@Optional协议方法,这是一种更加简洁的抽象方法,并且是新代码的首选方法,但与Java中的等效方法相比更是如此。

老实说,最灵活的方法是定义一个委托协议,然后让类实现所有方法。(对于像Eclipse这样的现代IDE,这是微不足道的。)许多Java接口都有一个随附的适配器类,这是一种通用方法,不需要用户实现很多空方法,但是它限制了继承,这使代码设计变得不灵活。
。(Josh Bloch在他的“ Effective Java”一书中对此进行了论述。)我的建议是仅首先提供一个接口,然后在确实需要时添加适配器。

无论您做什么,都要避免抛出

UnsupportedOperationException
“未实现”的方法。这将强制委托类处理应为可选方法的异常。正确的方法是实现不执行任何操作,返回默认值等的方法。对于没有空返回类型的方法,这些值应有据可查。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441045.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号