Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #20869
| Newsgroups | comp.lang.java.programmer |
|---|---|
| Date | 2013-01-02 04:51 -0800 |
| Message-ID | <c885bedb-977c-49b4-a10a-b9cdd3df1dd9@googlegroups.com> (permalink) |
| Subject | Why is that in JDK8: value used in lambda expression shuld be effectively final? |
| From | jeti789@web.de |
I'm currently plaing with JDK8 and using lambda-8-b69-windows-i586-17_dec_2012. I wonder why this does not compile:
List<Integer> ints = new ArrayList<>();
ints.add(1);
ints.add(2);
ints.add(3);
int sum = 0;
ints.forEach(i -> {sum += i;});
The compiler error is "value used in lambda expression shuld be effectively final"
However, this here compiles:
int sumArray[] = new int[] { 0 };
ints.forEach(i -> {sumArray[0] += i;});
I'm a bit confused now. Does this mean that JDK8 closures are no true closures or is this a bug in my IDE (IDEA 12)?
Thanks, Oliver
Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread
Why is that in JDK8: value used in lambda expression shuld be effectively final? jeti789@web.de - 2013-01-02 04:51 -0800
Re: Why is that in JDK8: value used in lambda expression shuld be effectively final? Steven Simpson <ss@domain.invalid> - 2013-01-02 14:15 +0000
Re: Why is that in JDK8: value used in lambda expression shuld be effectively final? Robert Klemme <shortcutter@googlemail.com> - 2013-01-07 23:08 +0100
Re: Why is that in JDK8: value used in lambda expression shuld be effectively final? Saxo <jeti789@web.de> - 2013-01-02 09:46 -0800
Re: Why is that in JDK8: value used in lambda expression shuld be effectively final? Saxo <jeti789@web.de> - 2013-01-05 07:01 -0800
csiph-web