hg: lambda/lambda/jdk: 8009736: static Comparator methods and narrowing type support

Michael Hixson michael.hixson at gmail.com
Thu May 9 22:00:31 PDT 2013


Hi Henry,

That's wonderful that null-friendly comparators are available now!
Maybe that happened earlier and I just missed it, but it's great.

One minor detail - shouldn't NullComparator also override reverse()?
I bet reverse() would usually come at the end of the chain, but if it
didn't, I think you'd run into problems with this sequence of calls:

  Comparator<String> c = Comparator.nullsFirst()
                                   .thenComparing(String.CASE_INSENSITIVE_ORDER)
                                   .reverse() // Not a NullComparator
                                   .thenComparing(Comparator.naturalOrder());
  List<String> list = Arrays.asList("a", null, "b", null);
  list.sort(c); // Won't this throw NPE?

-Michael

On Thu, May 9, 2013 at 9:24 PM,  <henry.jen at oracle.com> wrote:
> Changeset: 1b6b96644052
> Author:    henryjen
> Date:      2013-05-09 21:24 -0700
> URL:       http://hg.openjdk.java.net/lambda/lambda/jdk/rev/1b6b96644052
>
> 8009736: static Comparator methods and narrowing type support
> Reviewed-by:
>
> ! src/share/classes/java/util/Comparator.java
> ! src/share/classes/java/util/Comparators.java
> ! src/share/classes/java/util/stream/SortedOps.java
> ! test/java/nio/file/DirectoryStream/StreamTest.java
> ! test/java/nio/file/Files/StreamTest.java
> ! test/java/util/Collection/ListDefaults.java
> ! test/java/util/Comparator/BasicTest.java
> ! test/java/util/Comparator/TypeTest.java
> ! test/java/util/Comparators/BasicTest.java
> ! test/java/util/List/ExtensionsTest.java
> ! test/java/util/List/SortAndReplaceAllTest.java
> ! test/java/util/stream/Stream/EmployeeStreamTest.java
> ! test/java/util/stream/Stream/IntegerStreamTest.java
> ! test/java/util/stream/Stream/StringBuilderStreamTest.java
> ! test/java/util/stream/test/org/openjdk/tests/java/util/stream/SequentialOpTest.java
> ! test/java/util/stream/test/org/openjdk/tests/java/util/stream/SliceOpTest.java
> ! test/java/util/stream/test/org/openjdk/tests/java/util/stream/SortedOpTest.java
> ! test/sun/misc/JavaLangAccess/NewUnsafeString.java
>
>


More information about the lambda-dev mailing list