|
Blocks :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
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
}
};
}
reported by Zhong Yu in lambda-dev list.
|