mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-25 14:25:04 +07:00
lambda: effectively final parameters: copy in final variable if needed - never make implicitly final
This commit is contained in:
+24
@@ -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;
|
||||
};
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// "Replace with lambda" "true"
|
||||
class Test {
|
||||
{
|
||||
Comparable<String> c = (o)->{
|
||||
Comparable<String> c = o->{
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// "Replace with lambda" "true"
|
||||
class Test {
|
||||
{
|
||||
Comparable<String> c = (final String o)->{
|
||||
Comparable<String> c = o->{
|
||||
Runnable r = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// "Copy 'o' to temp final variable" "true"
|
||||
class Test1 {
|
||||
void foo(){}
|
||||
{
|
||||
Comparable<String> a = o->{
|
||||
o = "";
|
||||
final String finalO = o;
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println(finalO);
|
||||
}
|
||||
}.run();
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// "Copy 'o' to temp final variable" "true"
|
||||
class Test1 {
|
||||
void foo(){}
|
||||
{
|
||||
Comparable<String> a = o->{
|
||||
o = "";
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println(<caret>o);
|
||||
}
|
||||
}.run();
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user