Volume: 6 Issue: 4
Best Practices For Writing EJB Applications, by Sandra Emerson, Michael Girdley & Rob Woollen


Listing 1


public final class EmployeePK implements java.io.Serializable {


  public String lastName;
  public String firstName;
  public int officeNumber;


  private int hash = -1;


  public EmployeePK() {}


  public int hashCode() {
   if (hash == -1) {
     hash = lastName.hashCode() ^ firstName.hashCode()
      ^ officeNumber;
   }
   return hash;
  }
  public boolean equals(Object o) {
   if (o == this) return true;


   if (o instanceof EmployeePK) {
     EmployeePK other = (EmployeePK) o;
     return other.hashCode() == hashCode() &&
            other.officeNumber == officeNumber &&
            other.lastName.equals(lastName) &&
            other.firstName.equals(firstName);


   } else {
     return false;
   }
  }
}