lambda: effectively final parameters: copy in final variable if needed - never make implicitly final

This commit is contained in:
Anna Kozlova
2012-08-21 14:39:41 +04:00
parent c85e90f7c1
commit a0d858fa5b
13 changed files with 126 additions and 27 deletions

View File

@@ -90,4 +90,28 @@ class Sample {
runnable.run(); // prints 111
runnable2.run(); // prints 444
}
}
class ParameterIsEffectivelyFinal {
{
Comparable<String> c = o->{
new Runnable() {
@Override
public void run() {
System.out.println(o);
}
}.run();
return 0;
};
Comparable<String> c1 = o->{
o = "";
new Runnable() {
@Override
public void run() {
System.out.println(<error descr="Variable 'o' is accessed from within inner class. Needs to be declared final.">o</error>);
}
}.run();
return 0;
};
}
}