Java:如何解决缺少Equatable接口的问题?
据我所知,SortedMap或SortedSet之类的东西在Comparable<?>上使用compareTo(而不是equals).检查相等性的类型(contains,containsKey).
但是,如果某些类型在概念上是等同的,但不具有可比性呢? 我必须声明一个Comparator<?>并覆盖方法int compareTo(T o1,To2).好的,我可以为被认为相等的实例返回0.但是,对于非实际情况,当订单不明显时我会返回什么? 使用SortedMap或SortedSet的方法是否相等,但(概念上)不可比的类型好吗? 谢谢! 编辑: 编辑2: 编辑3: 编辑4: 编辑5: 编辑6: 解决方法
考虑将您的外国课程包装在您自己的内部.
public class Foreign { // undesired equals() and hashCode() implementation } public class ForeignWrapper { private Foreign foreign; public ForeignWrapper(Foreign foreign) { this.foreign = foreign; } public void equals() { // your equals implementation,using fields from foreign } public int hashCode() { // your hashCode implementation,using fields from foreign } } 然后将新的ForeignWrapper(外部)添加到标准HashSet / HashMap.不适用于所有情况,但可能适用于您的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |