Comparators.comparing inference error (original) (raw)
Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Apr 18 11:38:43 PDT 2013
- Previous message: Comparators.comparing inference error
- Next message: Comparators.comparing inference error
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
This is in the works - compiler will be smarter, eventually ;-)
Maurizio
On 18/04/13 19:18, Michael Nascimento wrote:
Hi folks,
I had a comparison chain in Guava which I tried to migrate by creating a comparator: Comparator c = Comparators .comparing(YearMonthDecade::getYearMonth) .thenComparing(YearMonthDecade::getDecadeNumber); getYearMonth returns a YearMonth and getDecadeNumber returns an int. I get the following compiler error: YearMonthDecade.java:[69,4] error: reference to comparing is ambiguous both method <T#1>comparing(ToLongFunction<? super T#1>) in Comparators and method <T#2>comparing(ToDoubleFunction<? super T#2>) in Comparators match where T#1,T#2 are type-variables: T#1 extends Object declared in method <T#1>comparing(ToLongFunction<? super T#1>) T#2 extends Object declared in method <T#2>comparing(ToDoubleFunction<? super T#2>) YearMonthDecade.java:[69,14] error: incompatible types: Cannot instantiate inference variables T because of an inference loop I can get it to compile with: Comparator c = Comparators .<YearMonthDecade,YearMonth>comparing(YearMonthDecade::getYearMonth) .thenComparing((ToIntFunction) YearMonthDecade::getDecadeNumber); Do you plan to make this work somehow (smarter compiler or no overloading anymore)? Regards, Michael
- Previous message: Comparators.comparing inference error
- Next message: Comparators.comparing inference error
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]