diff --git a/src/java.base/share/classes/java/util/Comparator.java b/src/java.base/share/classes/java/util/Comparator.java index 2e1c1e030151..115b025326f7 100644 --- a/src/java.base/share/classes/java/util/Comparator.java +++ b/src/java.base/share/classes/java/util/Comparator.java @@ -228,6 +228,7 @@ default Comparator reversed() { * @throws NullPointerException if the argument is null. * @since 1.8 */ + @SideEffectFree default Comparator thenComparing(Comparator other) { Objects.requireNonNull(other); return (Comparator & Serializable) (c1, c2) -> { @@ -253,6 +254,7 @@ default Comparator thenComparing(Comparator other) { * @see #thenComparing(Comparator) * @since 1.8 */ + @SideEffectFree default Comparator thenComparing( Function keyExtractor, Comparator keyComparator) @@ -277,6 +279,7 @@ default Comparator thenComparing( * @see #thenComparing(Comparator) * @since 1.8 */ + @SideEffectFree default > Comparator thenComparing( Function keyExtractor) { @@ -298,6 +301,7 @@ default > Comparator thenComparing( * @see #thenComparing(Comparator) * @since 1.8 */ + @SideEffectFree default Comparator thenComparingInt(ToIntFunction keyExtractor) { return thenComparing(comparingInt(keyExtractor)); } @@ -317,6 +321,7 @@ default Comparator thenComparingInt(ToIntFunction keyExtractor) { * @see #thenComparing(Comparator) * @since 1.8 */ + @SideEffectFree default Comparator thenComparingLong(ToLongFunction keyExtractor) { return thenComparing(comparingLong(keyExtractor)); } @@ -336,6 +341,7 @@ default Comparator thenComparingLong(ToLongFunction keyExtractor) * @see #thenComparing(Comparator) * @since 1.8 */ + @SideEffectFree default Comparator thenComparingDouble(ToDoubleFunction keyExtractor) { return thenComparing(comparingDouble(keyExtractor)); } @@ -353,6 +359,7 @@ default Comparator thenComparingDouble(ToDoubleFunction keyExtract * @see Comparable * @since 1.8 */ + @Pure public static > Comparator reverseOrder() { return Collections.reverseOrder(); } @@ -370,6 +377,7 @@ public static > Comparator reverseOrder() { * @see Comparable * @since 1.8 */ + @Pure @SuppressWarnings("unchecked") public static > Comparator naturalOrder() { return (Comparator) Comparators.NaturalOrderComparator.INSTANCE; @@ -392,6 +400,7 @@ public static > Comparator reverseOrder() { * {@code Comparator}. * @since 1.8 */ + @SideEffectFree public static Comparator<@Nullable T> nullsFirst(@Nullable Comparator comparator) { return new Comparators.NullComparator<>(true, comparator); } @@ -413,6 +422,7 @@ public static > Comparator reverseOrder() { * {@code Comparator}. * @since 1.8 */ + @SideEffectFree public static Comparator<@Nullable T> nullsLast(@Nullable Comparator comparator) { return new Comparators.NullComparator<>(false, comparator); } @@ -444,6 +454,7 @@ public static > Comparator reverseOrder() { * @throws NullPointerException if either argument is null * @since 1.8 */ + @SideEffectFree public static Comparator comparing( Function keyExtractor, Comparator keyComparator) @@ -479,6 +490,7 @@ public static Comparator comparing( * @throws NullPointerException if the argument is null * @since 1.8 */ + @SideEffectFree public static > Comparator comparing( Function keyExtractor) { @@ -502,6 +514,7 @@ public static > Comparator comparing( * @throws NullPointerException if the argument is null * @since 1.8 */ + @SideEffectFree public static Comparator comparingInt(ToIntFunction keyExtractor) { Objects.requireNonNull(keyExtractor); return (Comparator & Serializable) @@ -523,6 +536,7 @@ public static Comparator comparingInt(ToIntFunction keyExtract * @throws NullPointerException if the argument is null * @since 1.8 */ + @SideEffectFree public static Comparator comparingLong(ToLongFunction keyExtractor) { Objects.requireNonNull(keyExtractor); return (Comparator & Serializable) @@ -544,6 +558,7 @@ public static Comparator comparingLong(ToLongFunction keyExtra * @throws NullPointerException if the argument is null * @since 1.8 */ + @SideEffectFree public static Comparator comparingDouble(ToDoubleFunction keyExtractor) { Objects.requireNonNull(keyExtractor); return (Comparator & Serializable)