org.springframework.util.comparator

## Class InstanceComparator<T>

- java.lang.Object
- - org.springframework.util.comparator.InstanceComparator<T>

Type Parameters:
  `T` - The type of objects being compared

All Implemented Interfaces:
  Comparator<T>

    public class InstanceComparator<T>
    extends Object
    implements Comparator<T>

Compares objects based on an arbitrary class order. Allows objects to be sorted based on the types of class that they inherit, for example: this comparator can be used to sort a list `Number`s such that `Long`s occur before `Integer`s.

Only the specified `instanceOrder` classes are considered during comparison. If two objects are both instances of the ordered type this comparator will return a `0`. Consider combining with a `CompoundComparator` if additional sorting is required.

Since:
  3.2
Author:
  Phillip Webb
See Also:
  `CompoundComparator`

### Constructor Summary

Constructors
Constructor and Description
`InstanceComparator(Class<?>... instanceOrder)` Create a new `InstanceComparator` instance.

### Method Summary

Methods
`int` `compare(T o1, T o2)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.util.Comparator

`equals`

### Constructor Detail

#### InstanceComparator

    public InstanceComparator(Class<?>... instanceOrder)

Create a new `InstanceComparator` instance.

Parameters:
  `instanceOrder` - the ordered list of classes that should be used when comparing objects. Classes earlier in the list will be be given a higher priority.

### Method Detail

#### compare

    public int compare(T o1,
              T o2)

Specified by:
  `compare` in interface `Comparator<T>`