Reports implementations of 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;
      ...
      }
    }
  }