-
Bug
-
Resolution: Fixed
-
P4
-
8, 9
-
b42
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8085273 | emb-9 | Vicente Arturo Romero Zaldivar | P4 | Resolved | Fixed | team |
JDK-8067612 | 8u45 | Vicente Arturo Romero Zaldivar | P4 | Resolved | Fixed | b01 |
JDK-8065407 | 8u40 | Vicente Arturo Romero Zaldivar | P4 | Resolved | Fixed | b17 |
JDK-8070293 | emb-8u47 | Vicente Arturo Romero Zaldivar | P4 | Resolved | Fixed | team |
This will not compile:
void test(Box<? extends Box<? extends Number>> b) {
Number n = b.map(Box::get).get();
}
interface Func<S,T> { T apply(S arg); }
interface Box<T> {
T get();
<R> Box<R> map(Func<T,R> f);
}
error: incompatible types: inferred type does not conform to upper bound(s)
Number n = b.map(Box::get).get();
^
inferred: ? extends Number
upper bound(s): Object
If I remove the wildcards, there is no error.
Perhaps javac is failing to capture the return type of Box.get?
void test(Box<? extends Box<? extends Number>> b) {
Number n = b.map(Box::get).get();
}
interface Func<S,T> { T apply(S arg); }
interface Box<T> {
T get();
<R> Box<R> map(Func<T,R> f);
}
error: incompatible types: inferred type does not conform to upper bound(s)
Number n = b.map(Box::get).get();
^
inferred: ? extends Number
upper bound(s): Object
If I remove the wildcards, there is no error.
Perhaps javac is failing to capture the return type of Box.get?
- backported by
-
JDK-8065407 Inference chokes on wildcard derived from method reference
-
- Resolved
-
-
JDK-8067612 Inference chokes on wildcard derived from method reference
-
- Resolved
-
-
JDK-8070293 Inference chokes on wildcard derived from method reference
-
- Resolved
-
-
JDK-8085273 Inference chokes on wildcard derived from method reference
-
- Resolved
-
- relates to
-
JDK-8063054 Incorrect raw type warning for method reference
-
- Resolved
-