public abstract class LazyForwardingEquality<T extends java.io.Serializable> extends java.lang.Object implements java.io.Serializable, NoLambda
Implements equality, hashcode, and serialization entirely in terms of lazily-computed state. The state’s serialized form is used to implement equals() and hashCode(), so you don’t have to.
NoLambda.EqualityBasedOnSerialization| Constructor and Description |
|---|
LazyForwardingEquality() |
| Modifier and Type | Method and Description |
|---|---|
protected abstract T |
calculateState()
This function is guaranteed to be called at most once.
|
boolean |
equals(java.lang.Object other) |
int |
hashCode() |
protected T |
state()
Returns the underlying state, possibly triggering a call to {
calculateState(). |
byte[] |
toBytes()
Returns a byte array representation of everything inside this
SerializableFileFilter. |
protected abstract T calculateState() throws java.lang.Throwable
This function is guaranteed to be called at most once. If the state is never required, then it will never be called at all.
Throws exception because it’s likely that there will be some IO going on.
java.lang.Throwableprotected final T state()
Returns the underlying state, possibly triggering a call to {calculateState().
public byte[] toBytes()
NoLambdaReturns a byte array representation of everything inside this SerializableFileFilter.
The main purpose of this method is to ensure one can’t instantiate this class with lambda
expressions, which are notoriously difficult to serialize and deserialize properly. (See
SerializableFileFilterImpl.SkipFilesNamed for an example of how to make a serializable
subclass.)
public final boolean equals(java.lang.Object other)
equals in class java.lang.Objectpublic final int hashCode()
hashCode in class java.lang.Object