Pojomatic provides configurable implementations of the equals(Object), hashCode() and toString() methods inherited from java.lang.Object.
For example, the following bean has been "pojomated":
import org.pojomatic.Pojomatic; import org.pojomatic.annotations.AutoProperty; @AutoProperty public class Person { private final String firstName; private final String lastName; private final int age; public Person(String firstName, String lastName, int age) { this.firstName = firstName; this.lastName = lastName; this.age = age; } public String getFirstName() { return this.firstName; } public String getLastName() { return this.lastName; } public int getAge() { return this.age; } @Override public boolean equals(Object o) { return Pojomatic.equals(this, o); } @Override public int hashCode() { return Pojomatic.hashCode(this); } @Override public String toString() { return Pojomatic.toString(this); } }
The above class implements equals and hashCode methods following the best practices outlined in Josh Bloch's Efective Java. Moreover, running
System.out.println(new Person("John", "Doe", 32).toString());
will result in the following output:
Person{firstName: {John}, lastName: {Doe}, age: {32}}
For more information and examples, see the JavaDocs.