(我明白,我可以有一个接口传递给一个类,并让该类调用适当的方法,但我想知道是否有任何其他方法来实现更接近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非正式协议?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)