Lors de l'exécution de FindBugs sur mon projet, j'ai rencontré quelques instances de l'erreur décrite ci-dessus. En d'autres termes, mes versions précédentes d'égal à égal transforment l'objet RHS en le même type que l'objet dans lequel la version de remplacement est définie.Findbugs warning: La méthode Equals ne doit pas prendre en compte le type de son argument
Cependant, je ne suis pas sûr si une meilleure conception est possible, AFAIK Java n'autorisant pas la variance dans les paramètres de la méthode, il n'est donc pas possible de définir un autre type pour le paramètre equals. Est-ce que je fais quelque chose de très mal, ou FindBugs est-il trop impatient? Une autre façon de formuler cette question est: quel est le comportement correct si l'objet passé à égal n'est pas du même type qu'un LHS: est-ce un faux, ou devrait-il y avoir une exception?
Par exemple:
public boolean equals(Object rhs)
{
MyType rhsMyType = (MyType)rhs; // Should throw exception
if(this.field1().equals(rhsMyType.field1())... // Or whatever
}
cela semble un peu étrange. s'il vous plaît nous montrer du code. –