Lambda behaving differently than anonymous inner class

Dan Smith daniel.smith at oracle.com
Wed Mar 26 16:56:49 UTC 2014


Thanks for the report.  The bug is filed here:

https://bugs.openjdk.java.net/browse/JDK-8038420

—Dan

On Mar 26, 2014, at 9:03 AM, Victor Antunes <victor.antunes.ignacio at gmail.com> wrote:

> Hello all,
> 
> This e-mail is a follow-up to a question I've posted on StackOverflow:
> http://stackoverflow.com/questions/22648079/lambda-behaving-differently-than-anonymous-inner-class
> 
> 
> I'm relatively new to Java, and decided to pick up on lambda since the past
> few days. So I wrote a very simple anonymous inner class and wrote an
> equivalent lambda.
> 
> However, the lambda output was different, and it very strongly appears to
> be a bug.
> 
> Given:
> 
> interface Supplier<T> {
> 
>    T get(T t);}
> 
> Supplier<Integer> s1 = new Supplier<Integer>() {
>    @Override
>    public Integer get(Integer t) {
>        return t++;
>    }};Supplier<Integer> s2 = t ->
> t++;System.out.println(s1.get(2));System.out.println(s2.get(2));
> 
> The output is 2 and 3, NOT 2 and 2, as one would expect.
> 
> More info, including discussion about bytecode is available at the SO link
> above.
> 
> I'm also new to this list, so apologies if I've broken any mailing list
> etiquette.
> 
> -- 
> Kind regards,
> 
> Victor Antunes
> 



More information about the lambda-dev mailing list