При запуске FindBugs в моем проекте я получил несколько примеров ошибки, описанной выше.
А именно, мои переопределяющие версии равных приводят объект RHS к тому же типу, что и объект, в котором определена переопределяющая версия.
Однако я не уверен, возможен ли лучший дизайн, поскольку AFAIK Java не допускает отклонения в параметрах метода, поэтому невозможно определить какой-либо другой тип для параметра equals.
Я делаю что-то очень неправильно, или FindBugs слишком нетерпелив?
Другой способ сформулировать этот вопрос: каково правильное поведение, если объект, переданный равным, не является тем же типом, что и LHS: является ли это ложным или должно быть исключение?
Например:
public boolean equals(Object rhs)
{
MyType rhsMyType = (MyType)rhs; // Should throw exception
if(this.field1().equals(rhsMyType.field1())... // Or whatever
}