equals()
和hashCode()
方法。在这些方法中,我使用了抽象方法getDescription()
来检查相等性并生成哈希码。现在当我扩展这个类并添加一个仅在getDescription()
方法中使用的字段时,我会得到一个SonarLint问题“继承了覆盖了equals并添加了字段的类”。这只是Sonar不够复杂,无法理解正在发生的事情,还是我没有按照Java方式做,有更好/更优雅的方法吗?父类:
public abstract String getDescription();
@Override
public int hashCode()
{
return new HashCodeBuilder(19, 71).
append(mViolation).
append(getDescription()).
append(mProperties).
toHashCode();
}
@Override
public boolean equals(
final Object obj)
{
boolean equal = false;
if (this == obj)
{
equal = true;
}
else if (obj instanceof parent)
{
AbstractStructuredDataIssue rhs = (parent) obj;
equal = new EqualsBuilder().
append(mViolation, rhs.mViolation).
append(getDescription(), rhs.getDescription()).
append(mProperties, rhs.mProperties).
isEquals();
}
return equal;
}
子类:
public class Child extends Parent {
private final String mMessage;
public Child(final String message, final int number) {
super(number);
mMessage = message;
}
@Override
public String getDescription()
{
return String.format(
DESCRIPTION_FORMAT,
mMessage);
}
}