【发布时间】:2012-01-12 07:33:32
【问题描述】:
当覆盖我的一个类的 equals 属性时,是否可以这样实现它?有问题的属性(例如标识符)可以是 String、boolean、Date、Set 或 LinkedHashSet
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
if (!compareProperty(identifier, other.getIdentifier())) return false;
//Continue for all properties
}
//Compares any two objects
private boolean compareProperty(Object sourceObject, Object testObject)
{
if (sourceObject == null)
{
if (testObject != null)
return false;
}
else if(!sourceObject.equals(testObject))
{
return false;
}
return true;
}
为什么或为什么不?
【问题讨论】:
-
对不起,我没有正确理解你,但压倒一切等于????你不能覆盖 String 类的 equals() 方法,它是一个最终类。你不能修改它的行为。
-
抱歉,如果我不清楚,建议您覆盖对象的默认 .equals 方法以正确比较对象的实例。