Package org.springframework.core.annotation

# Class AnnotationAwareOrderComparator

java.lang.Object
org.springframework.core.OrderComparator
org.springframework.core.annotation.AnnotationAwareOrderComparator

All Implemented Interfaces:
  `Comparator<Object>`

public class AnnotationAwareOrderComparator extends OrderComparator
`AnnotationAwareOrderComparator` is an extension of `OrderComparator` that supports Spring's `Ordered` interface as well as the `@Order` and `@Priority` annotations, with an order value provided by an `Ordered` instance overriding a statically defined annotation value (if any).

Consult the Javadoc for `OrderComparator` for details on the sort semantics for non-ordered objects.

Since:
  2.0.1
Author:
  Juergen Hoeller, Oliver Gierke, Stephane Nicoll
See Also:
  - `Ordered`
  - `Order`
  - `jakarta.annotation.Priority`

## Nested Class Summary

## Nested classes/interfaces inherited from class org.springframework.core.OrderComparator

`OrderComparator.OrderSourceProvider`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final AnnotationAwareOrderComparator`
`INSTANCE`
Shared default instance of `AnnotationAwareOrderComparator`.

## Constructor Summary

Constructors
Constructor
Description
`AnnotationAwareOrderComparator()`

## Method Summary

Modifier and Type
Method
Description
`protected Integer`
`findOrder(Object obj)`
This implementation checks for `@Order` or `@Priority` on various kinds of elements, in addition to the `Ordered` check in the superclass.
`Integer`
`getPriority(Object obj)`
This implementation retrieves an @`jakarta.annotation.Priority` value, allowing for additional semantics over the regular @`Order` annotation: typically, selecting one object over another in case of multiple matches but only one object to be returned.
`static void`
`sort(Object[] array)`
Sort the given array with a default AnnotationAwareOrderComparator.
`static void`
`sort(List<?> list)`
Sort the given list with a default `AnnotationAwareOrderComparator`.
`static void`
`sortIfNecessary(Object value)`
Sort the given array or List with a default AnnotationAwareOrderComparator, if necessary.

### Methods inherited from class org.springframework.core.OrderComparator

`compare, getOrder, withSourceProvider`

### 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, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong`

## Field Details

### INSTANCE

public static final AnnotationAwareOrderComparator INSTANCE
Shared default instance of `AnnotationAwareOrderComparator`.

## Constructor Details

### AnnotationAwareOrderComparator

public AnnotationAwareOrderComparator()

## Method Details

### findOrder

@Nullable protected Integer findOrder(Object obj)
This implementation checks for `@Order` or `@Priority` on various kinds of elements, in addition to the `Ordered` check in the superclass.

Overrides:
  `findOrder` in class `OrderComparator`
Parameters:
  `obj` - the object to check
Returns:
  the order value, or `null` if none found

### getPriority

@Nullable public Integer getPriority(Object obj)
This implementation retrieves an @`jakarta.annotation.Priority` value, allowing for additional semantics over the regular @`Order` annotation: typically, selecting one object over another in case of multiple matches but only one object to be returned.

Overrides:
  `getPriority` in class `OrderComparator`
Parameters:
  `obj` - the object to check
Returns:
  the priority value, or `null` if none

### sort

public static void sort(List<?> list)
Sort the given list with a default `AnnotationAwareOrderComparator`.

Optimized to skip sorting for lists with size 0 or 1, in order to avoid unnecessary array extraction.

Parameters:
  `list` - the List to sort
See Also:
  - `List.sort(java.util.Comparator)`

### sort

public static void sort(Object[] array)
Sort the given array with a default AnnotationAwareOrderComparator.

Optimized to skip sorting for lists with size 0 or 1, in order to avoid unnecessary array extraction.

Parameters:
  `array` - the array to sort
See Also:
  - `Arrays.sort(Object[], java.util.Comparator)`

### sortIfNecessary

public static void sortIfNecessary(Object value)
Sort the given array or List with a default AnnotationAwareOrderComparator, if necessary. Simply skips sorting when given any other value.

Optimized to skip sorting for lists with size 0 or 1, in order to avoid unnecessary array extraction.

Parameters:
  `value` - the array or List to sort
See Also:
  - `Arrays.sort(Object[], java.util.Comparator)`