equals()
that access
non-final
variables. Such access may result in equals()
returning different results at different points in the object's lifecycle, which may in turn cause problems when
using the standard collections classes.
Example:
public class Person {
private String lastName;
@Override
public boolean equals(Object obj) {
...
Person other = (Person) obj;
if (lastName == null) {
if (!lastName.equals(other.lastName)) {
return false;
...
}
}
}