incompatible types compile error
Arul Dhesiaseelan
aruld at acm.org
Mon Nov 19 13:36:37 PST 2012
Thanks Maurizio for the clarification.
For me, the first usage fails to compile as expected. The second usage
works perfectly fine, I wonder what is different that make second example
work without the type parameter. I tested with today's build.
List<Album> sortedFavs1 = albums.stream()
.filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >= 4)))
.sorted(comparing((Function<Album, Comparable>) album -> album.name
))
.into(new ArrayList<Album>());//java: incompatible types:
java.util.stream.Stream.Destination cannot be converted to
java.util.List<streams.Album>
List<Album> sortedFavs2 = new ArrayList<Album>();
albums.stream()
.filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >= 4)))
.sorted(comparing((Function<Album, Comparable>) album -> album.name
))
.into(sortedFavs2);
Here is the working version with the type parameter.
List<Album> sortedFavs = albums.stream()
.filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >= 4)))
.sorted(comparing((Function<Album, String>) album -> album.name))
.into(new ArrayList<Album>());
- Arul
On Mon, Nov 19, 2012 at 3:37 AM, Maurizio Cimadamore <
maurizio.cimadamore at oracle.com> wrote:
> The problem is that, since you are using Comparable (note the absence of
> type-parameters) you are effectively triggering an uunchecked conversion
> there - the result would be that the erased signature of 'into' will be
> used instead - that is, the return type of into will be simply Destination
> - not the type inferred from the argument - hence the incompatible types
> error.
>
> Btw - I'm getting the error for both versions of the example you sent.
>
> Maurizio
>
>
> On 16/11/12 23:01, Arul Dhesiaseelan wrote:
>
>> This works, btw.
>>
>> List<Album> sortedFavs = new ArrayList<Album>();
>> albums.stream()
>> .filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >=
>> 4)))
>> .sorted(comparing((Mapper<**Comparable, Album>) album ->
>> album.name))
>> .into(sortedFavs);
>>
>>
>>
>> On Fri, Nov 16, 2012 at 12:38 PM, Remi Forax <forax at univ-mlv.fr> wrote:
>>
>> On 11/16/2012 10:57 PM, Arul Dhesiaseelan wrote:
>>>
>>>> Hi,
>>>>
>>>> I am trying to run a slightly modified version from the latest State of
>>>>
>>> the
>>>
>>>> Lambda libraries edition.
>>>>
>>>> List<Album> sortedFavs =
>>>> albums.stream()
>>>> .filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >=
>>>>
>>> 4)))
>>>
>>>> .sorted(comparing((Mapper<**Comparable, Album>) album ->
>>>> album.name))
>>>> .into(new ArrayList<Album>());
>>>>
>>>> java: incompatible types: java.util.stream.Stream.**Destination cannot
>>>> be
>>>> converted to java.util.List<Album>
>>>>
>>>> Any idea what could be wrong here?
>>>>
>>> the signature of the method into.
>>>
>>> -Arul
>>>>
>>>> Rémi
>>>
>>>
>>>
>>>
>
More information about the lambda-dev
mailing list