Request for Review: CR#8001667, second attempt
Peter Levart
peter.levart at gmail.com
Fri Dec 7 01:09:18 PST 2012
Hi Henry,
I don't know what the plans are about moving the static methods in
Comparators to the Comparator interface when static interface methods
are enabled, but if that is planned, there will be a clash between
Comparator.reverseOrder() default method and static method with same
name and signature.
Maybe rename static .reverseOrder() to .reverseNaturalOrder() (to
long?), or rename the default method .reverseOrder() to .reverse();
Also, I like the natural-language-like fluent syntax when starting with
Comparators.comparing(...).thenComparing(...).reverse[Order](), but the
.thenComparing name is also overloaded with the variant for composing:
.thenComparing(Comparator) which makes statements like:
Comparators.comparing(x -> x.size).thenComparing(x ->
x.y).thenComparing((x, y) -> some expression)
a little confusing, because what you get is not a comparator that
compares one value of "some expression" with some other value of the
same expression, but a comparator that uses the value of expression to
order two elements.
I think that using the same method name for two different purposes is a
little confusing. Maybe .compose(Comparator) or just plain
.then(Comparator) would be better here.
Regards, Peter
On 12/06/2012 07:57 AM, Henry Jen wrote:
> Hi,
>
> This update reflect changes based on feedbacks for last version, the
> changes are
>
> - rename reverse() to reverseOrder()
> - rename Comparator.compose to Comparator.thenComparing
> - add 4 Comparator.thenComparing methods take [Int|Long|Double]Function
> to enable fluent syntax like this example,
>
> people.sort(Comparators.comparing(People::getFirstName).thenComparing(People.getLastName))
>
> vs previously,
>
> people.sort(Comparators.comparing(Person::getName))
> Comparator<Person> byLastFirst
> = Comparators.comparing(Person::getLastName)
> .compose(Comparators.comparing(Person::getFirstName))
>
> Please review and comment on the webrev[1] and specdiff[2].
>
> [1] http://cr.openjdk.java.net/~henryjen/ccc/8001667.1/webrev
> [2]
> http://cr.openjdk.java.net/~henryjen/ccc/8001667.1/specdiff/overview-summary.html
>
> Cheers,
> Henry
More information about the lambda-dev
mailing list