Java相当于Cocoa代表 Objective-C非正式协议?

Java相当于Cocoa代表 Objective-C非正式协议?,第1张

概述Cocoa代表的 Java等价物是什么? (我明白,我可以有一个接口传递给一个类,并让该类调用适当的方法,但我想知道是否有任何其他方法来实现更接近Cocoa / Objective-C的非正式协议) 简短的答案是Java中没有什么可以接近你想要的,但有其他选择.代理模式并不难实现,它与Objective-C一样方便. Objective-C中的“非正式协议”工作原因是因为该语言支持类别,它允许您将 Cocoa代表的 Java等价物是什么?

(我明白,我可以有一个接口传递给一个类,并让该类调用适当的方法,但我想知道是否有任何其他方法来实现更接近Cocoa / Objective-C的非正式协议)

解决方法 简短的答案是Java中没有什么可以接近你想要的,但有其他选择.代理模式并不难实现,它与Objective-C一样方便.

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

Objective-C 2.0选择了@optional协议方法,这是一个更清晰的抽象,并且适用于新的代码,但是在Java中具有相当的优势.

老实说,最灵活的方法是定义一个委托协议,然后让类实现所有的方法. (使用像Eclipse这样的现代IDE,这是微不足道的)许多Java接口都有一个附带的适配器类,这是一种常见的方法,不需要用户实现大量的空方法,但它限制了继承,这使得代码设计变得不灵活. (Josh Bloch在他的书“Effective Java”中提到这一点).我的建议是先提供一个接口,然后如果真的有必要添加适配器.

无论您做什么,请避免对“未实现”方法抛出UnsupportedOperationException异常.这将强制委托类处理应该是可选的方法的异常.正确的方法是实现一个不执行任何 *** 作的方法,返回默认值等.对于没有返回类型的方法,这些值应该有很好的记录.

总结

以上是内存溢出为你收集整理的Java相当于Cocoa代表/ Objective-C非正式协议?全部内容,希望文章能够帮你解决Java相当于Cocoa代表/ Objective-C非正式协议?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1029280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存