lambda bugs? referencing instance variable from lambda body
Zhong Yu
zhong.j.yu at gmail.com
Thu Sep 12 15:59:35 PDT 2013
This compiles . . . . . . . . . . . . . . . . . . . . . . . . .
public class Tmp
{
final Runnable r1 = ()->System.out.println(r1);
}
This does NOT . . . . . . . . . . . . . . . . . . . . . . . . .
public class Tmp
{
final Runnable r1;
final Runnable r2 = ()-> System.out.println(r1); // Error: r1 not
initialized
Tmp()
{
r1 = ()->System.out.println(r1); // Error: r1 not initialized
}
}
This compiles . . . . . . . . . . . . . . . . . . . . . . . . .
public class Tmp
{
final Object lock = new Object();
final Runnable r2 = ()->{
System.out.println(r2);
synchronized (lock){
}
};
}
This does NOT . . . . . . . . . . . . . . . . . . . . . . . . .
public class Tmp
{
final Object lock = new Object();
final Runnable r2 = ()->{
synchronized (lock){
System.out.println(r2); // Error: self-reference in initializer
}
};
}
Zhong Yu
More information about the lambda-dev
mailing list