Assuming you are actually talking about Object
's .equals()
/.hashCode()
, which is not what your code currently does, you can do that using Guava's Equivalence
.
Create an equivalence:
public final class SampleClassIdEquivalence
extends Equivalence<SampleClass>
{
// override .doEquivalent(), .doHash()
}
Then you can use it like so:
final Equivalence<SampleClass> byId = new SampleClassIdEquivalence();
byId.equivalent(o1, o2);
Set<Equivalence.Wrapper<SampleClass>> set = ...
set.add(byId.wrap(whatever));
Then you can create other equivalences for equality by name or whatever; your choice.
In fact, Equivalence
is pretty much to .equals()
/.hashCode()
what Comparator
is to Comparable
.