Lambda behaving differently than anonymous inner class
Victor Antunes
victor.antunes.ignacio at gmail.com
Wed Mar 26 15:03:19 UTC 2014
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