Compilation error with JDK8
Olivier Bourgain
obourgain at gmail.com
Tue Apr 2 06:50:41 PDT 2013
I'm still trying to compile my project with java 8 (b83), I and get another
error.
Here is the simplest test case I've found which reproduce this error :
===== Vo.java
public interface Vo {
public Integer getId();
}
===== Service.java
public class Service {
public static <H extends Vo> H getParentById(H vo) {
return (H) getParent(findByPk(vo.getClass(), vo.getId()));
}
public static <H extends Vo> H getParent(H vo) {
return null;
}
public static <H extends Vo> H findByPk(Class<H> voClass, Integer id) {
return null;
}
}
The error message is :
» javac src/*.java
src/Service.java:4: error: method getParent in class Service cannot be
applied to given types;
return (H) getParent(findByPk(vo.getClass(), vo.getId()));
^
required: H#1
found: CAP#1
reason: cannot infer type-variable(s) H#1,H#2
(argument mismatch; Vo cannot be converted to CAP#2)
where H#1,H#2 are type-variables:
H#1 extends Vo declared in method <H#1>getParent(H#1)
H#2 extends Vo declared in method <H#2>findByPk(Class<H#2>,Integer)
where CAP#1,CAP#2 are fresh type-variables:
CAP#1 extends Vo from capture of ? extends Vo
CAP#2 extends Vo from capture of ? extends Vo
1 error
The java version :
openjdk version "1.8.0-ea"
OpenJDK Runtime Environment (build
1.8.0-ea-lambda-nightly-h3797-20130325-b83-b00)
OpenJDK Server VM (build 25.0-b21, mixed mode)
Olivier Bourgain
More information about the lambda-dev
mailing list