Class SerializableComparatorWrapperClass<T>

  • Type Parameters:
    T - comparable type
    All Implemented Interfaces:
    java.io.Serializable, java.util.Comparator<T>, SerializableComparator<T>

    public class SerializableComparatorWrapperClass<T>
    extends java.lang.Object
    implements SerializableComparator<T>
    Wrapper for a non-serializable subclass of Comparator, such as Collator. This way you can still use such comparators in a serializable way. This wrapper calls the given SerializableSupplier to retrieve a delegate Comparator which it uses for all calls to its compare(Object, Object)-method. It caches the retrieved Comparator in a transient field for efficiency. Usage example:
     SerializableComparator<Object> collator = new SerializableComparatorWrapper<>(() -> Collator.getInstance(Locale.UK));
     SerializableComparator<Object> objectComparator = SerializableComparator.comparing(Object::toString, collator);
     
    (Note that Collator is an instance of Comparator typed with Object, not with a generic type variable.)
    See Also:
    Serialized Form
    • Field Detail

      • delegate

        private transient java.util.Comparator<T> delegate
    • Constructor Detail

      • SerializableComparatorWrapperClass

        public SerializableComparatorWrapperClass​(SerializableSupplier<java.util.Comparator<T>> comparatorSupplier)
    • Method Detail

      • compare

        public int compare​(T o1,
                           T o2)
        Specified by:
        compare in interface java.util.Comparator<T>