Class LazyForwardingEquality<T extends java.io.Serializable>

  • All Implemented Interfaces:
    NoLambda, java.io.Serializable
    Direct Known Subclasses:
    FormatterStep.Strict

    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.
    See Also:
    Serialized Form
    • Constructor Detail

      • LazyForwardingEquality

        public LazyForwardingEquality()
    • Method Detail

      • calculateState

        protected abstract T calculateState()
                                     throws java.lang.Exception
        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.
        Throws:
        java.lang.Exception
      • state

        protected final T state()
        Returns the underlying state, possibly triggering a call to {calculateState().
      • toBytes

        public byte[] toBytes()
        Description copied from interface: NoLambda
        Returns 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.)
        Specified by:
        toBytes in interface NoLambda
      • equals

        public final boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public final int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • unlazy

        public static void unlazy​(java.lang.Object in)
        Ensures that the lazy state has been evaluated.