FULL PRODUCT VERSION :
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
Overloaded method java.lang.String.valueof infers a type argument of char[] when a generic method returns an Object (Integer or String).
with source level set to 1.7 it works as expected.
with source level set to 1.8 it throws
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to [C
REGRESSION. Last worked in version 7u55
ADDITIONAL REGRESSION INFORMATION:
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
public class Test {
public static void main(String... args) throws Exception {
System.out.println(String.valueOf(getNum()));
}
private static <T> T getNum(){
Integer i = 123;
return (T)i;
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
invoke String.valueof(Object obj)
ACTUAL -
invoke String.valueof(char[] data)
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to [C
at Test.main(Test.java:6)
Java Result: 1
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class Test {
public static void main(String... args) throws Exception {
System.out.println(String.valueOf(getNum()));
}
private static <T> T getNum(){
Integer i = 123;
return (T)i;
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
public class Test {
public static void main(String... args) throws Exception {
System.out.println(String.valueOf((Object)getNum()));
}
private static <T> T getNum(){
Integer i = 123;
return (T)i;
}
}
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
Overloaded method java.lang.String.valueof infers a type argument of char[] when a generic method returns an Object (Integer or String).
with source level set to 1.7 it works as expected.
with source level set to 1.8 it throws
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to [C
REGRESSION. Last worked in version 7u55
ADDITIONAL REGRESSION INFORMATION:
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
public class Test {
public static void main(String... args) throws Exception {
System.out.println(String.valueOf(getNum()));
}
private static <T> T getNum(){
Integer i = 123;
return (T)i;
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
invoke String.valueof(Object obj)
ACTUAL -
invoke String.valueof(char[] data)
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to [C
at Test.main(Test.java:6)
Java Result: 1
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class Test {
public static void main(String... args) throws Exception {
System.out.println(String.valueOf(getNum()));
}
private static <T> T getNum(){
Integer i = 123;
return (T)i;
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
public class Test {
public static void main(String... args) throws Exception {
System.out.println(String.valueOf((Object)getNum()));
}
private static <T> T getNum(){
Integer i = 123;
return (T)i;
}
}