|
Duplicate :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
See attached test case.
import java.util.function.Function;
public class LambdaSelfRef {
// COMPILATION FAILURE
public static Function<Object, Object> op1 = e -> op1.apply(e);
// COMPILES OK
public static Function<Object, Object> op2 = e -> LambdaSelfRef.op2.apply(e);
// COMPILES OK
public static Function<Object, Object> op3 = new Function<Object, Object>() {
public Object apply(Object o) {
return op3.apply(o);
}
};
// COMPILES OK
public static Function<Object, Object> op4 = new Function<Object, Object>() {
public Object apply(Object o) {
return LambdaSelfRef.op4.apply(o);
}
};
}
The weird thing is that accessing the static field via class works perfectly. Seems to be constrained to lambdas, anonymous classes permit the behavior we are after.
|