मैं दो सेट है:जावा assertEquals सेट
Set<Attribute> set1 = new HashSet<Attribute>(5);
Set<Attribute> set2 = new HashSet<Attribute>(5);
//add 5 attribute objects to each of them. (not necessarily the same objects)
assertEquals(set1,set2); //<--- returns false, even though
//the added attribute objects are equal
बराबर गुण की विधि ओवरराइड की गई है, मेरे आवश्यकताओं के अनुसार:
public abstract class Attribute implements Serializable{
public int attribute;
public abstract boolean isNumerical();
@Override
public boolean equals(Object other){
if(!(other instanceof Attribute)){
return false;
}
Attribute otherAttribute = (Attribute)other;
return (this.attribute == otherAttribute.attribute &&
this.isNumerical() == otherAttribute.isNumerical());
}
}
जब डीबगिंग, बराबरी विधि भी कहा जाता है नहीं है!
कोई विचार?
की बराबरी से इस्तेमाल किया यह भी देखें है: [अधिभावी के बराबर होती है और जावा में hashCode] (http://stackoverflow.com/questions/27581) – McDowell
@McDowell: धन्यवाद! मुझे पता था कि यदि हैशकोड 2 ऑब्जेक्ट्स के लिए अलग-अलग मान देता है तो बराबर कॉल से सच होने का कोई मौका नहीं है। मैं जल्दी में था! :) – Razvan