Path: csiph.com!news.swapon.de!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Steven Simpson Newsgroups: comp.lang.java.programmer Subject: Re: Java 8 Lambda with generic types Date: Sun, 28 Aug 2016 08:19:26 +0100 Organization: A noiseless patient Spider Lines: 39 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: mx02.eternal-september.org; posting-host="aeef5e178076fda4998e4379bb1adbab"; logging-data="23304"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18n1cHEGaD447ysOBbvIhNt8SrqE/iYieg=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 In-Reply-To: Cancel-Lock: sha1:m8upiglZolN33tUTsxZC9at8dD0= Xref: csiph.com comp.lang.java.programmer:35484 On 28/08/16 07:50, Stone Zhong wrote: > However, if I have > checkToy(() -> { > return Arrays.asList(10); > }); > > I got compiling error: "List cannot be converted to List", it seems compiler tried to create a instance of Toy instead of Toy based on the lambda. Is there a wait to tell the compiler it is Toy explicitly with the lambda expression? Do you need the qualification on asList? It seems to work without: import java.util.*; import java.util.function.*; public class Funk { interface Toy { List get(); } static void checkToy(Toy toy) { } public void test() { checkToy(new Toy() { @Override public List get() { return Arrays.asList(10); } }); checkToy(() -> Arrays.asList(10)); checkToy(() -> { return Arrays.asList(10); }); } } -- ss at comp dot lancs dot ac dot uk