Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #35485

Re: Java 8 Lambda with generic types

Newsgroups comp.lang.java.programmer
Date 2016-08-28 03:26 -0700
References <df44fc1a-9d48-4ba8-890e-a687d24062a9@googlegroups.com>
Message-ID <08a42ed5-5dc2-4e56-a104-6f72ffb75ab8@googlegroups.com> (permalink)
Subject Re: Java 8 Lambda with generic types
From Stone Zhong <stone.zhong@gmail.com>

Show all headers | View raw


On Saturday, August 27, 2016 at 11:50:40 PM UTC-7, Stone Zhong wrote:
> Hi there, 
> 
> It seems sometimes, the compiler is not smart enough to decide the generic parameter type based on labmda argument types, here is an example:
> 
> I have a interface, say Toy:
> 
> public interface Toy<E> {
>     List<E> get();
> }
> 
> 
> Now I have a method to process toys, such as:
>     public static void checkToy(Toy<?> toy) {
>     }
> 
> Now, the following code works
>         checkToy(new Toy<Integer>() {
>             @Override
>             public List<Integer> get() {
>                 List<Integer> ret = Arrays.asList(10);
>                 return ret;
>             }
>         });
> 
> However, if I have 
>         checkToy(() -> {
>             return Arrays.<Integer>asList(10);
>         });
> 
> I got compiling error: "List<Integer> cannot be converted to List<Object>", it seems compiler tried to create a instance of Toy<Object> instead of Toy<Integer> based on the lambda. Is there a wait to tell the compiler it is Toy<Integer> explicitly with the lambda expression?
> 
> Thanks,
> Stone

<quote>
Do you need the <Integer> qualification on asList?
</quote>
The point is not to use asList or not, replace "Arrays.<Integer>asList(10)" with any function that returns a List<Integer> will fail as well, you can explicit cast the type, which looks very ugly.

- Stone

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Java 8 Lambda with generic types Stone Zhong <stone.zhong@gmail.com> - 2016-08-27 23:50 -0700
  Re: Java 8 Lambda with generic types Stone Zhong <stone.zhong@gmail.com> - 2016-08-28 00:02 -0700
    Re: Java 8 Lambda with generic types Arne Vajhøj <arne@vajhoej.dk> - 2016-08-28 07:46 -0400
      Re: Java 8 Lambda with generic types Steven Simpson <ss@my.domain.invalid> - 2016-08-28 15:00 +0100
        Re: Java 8 Lambda with generic types Lew <lewbloch@gmail.com> - 2016-08-30 22:25 -0700
          Re: Java 8 Lambda with generic types Steven Simpson <ss@my.domain.invalid> - 2016-08-31 17:19 +0100
  Re: Java 8 Lambda with generic types Steven Simpson <ss@my.domain.invalid> - 2016-08-28 08:19 +0100
  Re: Java 8 Lambda with generic types Stone Zhong <stone.zhong@gmail.com> - 2016-08-28 03:26 -0700
  Re: Java 8 Lambda with generic types Stone Zhong <stone.zhong@gmail.com> - 2016-08-28 07:45 -0700
    Re: Java 8 Lambda with generic types Arne Vajhøj <arne@vajhoej.dk> - 2016-08-28 13:22 -0400
  Re: Java 8 Lambda with generic types Stone Zhong <stone.zhong@gmail.com> - 2016-08-28 07:57 -0700
  Re: Java 8 Lambda with generic types Stone Zhong <stone.zhong@gmail.com> - 2016-08-28 10:43 -0700
    Re: Java 8 Lambda with generic types Arne Vajhøj <arne@vajhoej.dk> - 2016-08-30 20:35 -0400
  Re: Java 8 Lambda with generic types Stone Zhong <stone.zhong@gmail.com> - 2016-09-02 15:18 -0700

csiph-web