-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
9
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8044228 | 8u20 | Dan Smith | P3 | Closed | Duplicate |
The following compiles in 8 but fails to compile current in 9:
import java.util.ArrayList;
import java.util.List;
public class CaptureInference {
public List<String> l;
public CaptureInference() {
l = new ArrayList<>(get(String.class));
}
public static <T> List<? extends T> get(Class<T> clazz) {
return null;
}
}
/*
String.class -> Class<t>
Class<String> -> Class<t>
{ t = String }
List<? extends t> -> Collection<? extends e>
{ t = String, z <: Object, List<z> = capture(List<? extends t>) }
List<z> -> Collection<? extends e>
{ t = String, z <: Object, z <: e, List<z> = capture(List<? extends t>) }
ArrayList<e> -> List<String>
{ t = String, e = String, z <: Object, z <: e, List<z> = capture(List<? extends t>) }
*/
import java.util.ArrayList;
import java.util.List;
public class CaptureInference {
public List<String> l;
public CaptureInference() {
l = new ArrayList<>(get(String.class));
}
public static <T> List<? extends T> get(Class<T> clazz) {
return null;
}
}
/*
String.class -> Class<t>
Class<String> -> Class<t>
{ t = String }
List<? extends t> -> Collection<? extends e>
{ t = String, z <: Object, List<z> = capture(List<? extends t>) }
List<z> -> Collection<? extends e>
{ t = String, z <: Object, z <: e, List<z> = capture(List<? extends t>) }
ArrayList<e> -> List<String>
{ t = String, e = String, z <: Object, z <: e, List<z> = capture(List<? extends t>) }
*/
- backported by
-
JDK-8044228 Inference failure involving capture inference variable
-
- Closed
-
- duplicates
-
JDK-8039214 Inference should not map capture variables to their upper bounds
-
- Closed
-
-
JDK-8061782 Unable to compile code using wildcard generics under 8u25 but builds under 8u05
-
- Closed
-
- relates to
-
JDK-8033718 Inference ignores capture variable as upper bound
-
- Closed
-