##Aequum##
###Responsibilities###
The Aequum library is designed to help remove some of the boiler plate when
writing the toString, equals, hashCode and compareTo methods on POJO classes through the
use of Java 8 lambdas.
Note that this library depends on Java 8.
###Component initialisation instructions###
To use this library, call the builder method on the Aequum class and then
add the relevant fields through either the withField or withComparableField.
Once the necessary fields have been added, then the build method should be
called.
###State characteristics (i.e. stateless)###
Once the build method has been called, the state of the built classes will not
change and so are thread safe.
###Developer Highlights (i.e. Classes of interest)###
Apart from the builder class, Aequum, the two classes of interest are
EqualsHashCode and ComparableEqualsHashCode.
####EqualsHashCode#### This class is responsible for calculating equality and the hashCode for an object.
####ComparableEqualsHashCode####
This class extends EqualsHashCode and implements the comparison of an object.
###Example### This is an example of using this library on a POJO:
public Example implements Comparable<Example> {
private static final ComparableEqualsHashCode<Example> EQUALS_HASH_CODE =
Aequum.builder(Example.class)
.withComparableField(Example::getFieldOne)
.withComparableField(Example::getFieldTwo)
.withComparableField(Example::getFieldThree)
.build();
private final String fieldOne;
private final String fieldTwo;
private final int fieldThree;
public Example(final String fieldOne, final String fieldTwo, final int fieldThree) {...}
public String getFieldOne() {...}
public String getFieldTwo() {...}
public int getFieldThree() {...}
@Override
public boolean equals(final Object o) {
return EQUALS_HASH_CODE.isEqual(this, o);
}
@Overide
public int hashCode() {
return EQUALS_HASH_CODE.toHashCode(this);
}
@Override
public int compareTo(final Example o) {
return EQUALS_HASH_CODE.compare(this, o);
}
@Override
public String toString() {
return EQUALS_HASH_CODE.toString(this);
}
}