question about potentially compatible expression
Rafkind, Jon
jon.rafkind at hp.com
Wed Oct 16 15:42:41 PDT 2013
In section 15.12.2.1 in JSR 335 is the following text
A lambda expression, a method reference, or a constructor reference is potentially compatible with a type variable if the type variable is a type parameter of the candidate method.
Why is there a restriction that the type parameter must be on the candidate method? This rules out the possibility of using a type parameter on the enclosing class as in the following code:
public class y<P extends Z>{
public void boo(P t){
}
public void q(){
}
public void doit(){
boo(this::q);
}
}
interface Z{
public void q();
}
I get this error:
$ javac8 y.java
y.java:9: error: incompatible types: P is not a functional interface
boo(this::q);
But attaching 'P' to method 'boo' directly works.
public <P extends Z> void boo(P t){
}
More information about the lambda-dev
mailing list