-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
8
FULL PRODUCT VERSION :
java version " 1.8.0-ea "
Java(TM) SE Runtime Environment (build 1.8.0-ea-b92)
Java HotSpot(TM) Client VM (build 25.0-b34, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
The new inference rules cause existing code to no longer compile.
REGRESSION. Last worked in version 7u40
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Try to compile the given code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The code should compile, as it does under Java 7.
ACTUAL -
The code does not compile.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java: method doNumber in class java8.InferenceTest cannot be applied to given types;
required: java.lang.Class<N>
found: java.lang.Class<capture#1 of ? extends java.lang.Number>
reason: cannot infer type-variable(s) N,U
(argument mismatch; java.lang.Class<capture#2 of ? extends java.lang.Number> cannot be converted to java.lang.Class<capture#3 of ? extends java.lang.Number>)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package java8;
public class InferenceTest
{
private void test () {
Class<?> c1 = Integer.class;
doNumber (c1.asSubclass (Number.class));
final Class<? extends Number> c2 = c1.asSubclass (Number.class);
doNumber (c2);
}
private <N extends Number> void doNumber (Class<N> type) {}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
The workaround is to introduce a local variable, as in line 8
java version " 1.8.0-ea "
Java(TM) SE Runtime Environment (build 1.8.0-ea-b92)
Java HotSpot(TM) Client VM (build 25.0-b34, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
The new inference rules cause existing code to no longer compile.
REGRESSION. Last worked in version 7u40
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Try to compile the given code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The code should compile, as it does under Java 7.
ACTUAL -
The code does not compile.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java: method doNumber in class java8.InferenceTest cannot be applied to given types;
required: java.lang.Class<N>
found: java.lang.Class<capture#1 of ? extends java.lang.Number>
reason: cannot infer type-variable(s) N,U
(argument mismatch; java.lang.Class<capture#2 of ? extends java.lang.Number> cannot be converted to java.lang.Class<capture#3 of ? extends java.lang.Number>)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package java8;
public class InferenceTest
{
private void test () {
Class<?> c1 = Integer.class;
doNumber (c1.asSubclass (Number.class));
final Class<? extends Number> c2 = c1.asSubclass (Number.class);
doNumber (c2);
}
private <N extends Number> void doNumber (Class<N> type) {}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
The workaround is to introduce a local variable, as in line 8
- duplicates
-
JDK-8008200 java/lang/Class/asSubclass/BasicUnit.java fails to compile
-
- Resolved
-