String.valueOf()当我尝试使用泛型方法的返回值作为方法参数时<T> T testMet1(int a),出现错误:
线程“main”中的异常 java.lang.ClassCastException:类 java.lang.Integer 无法转换为类 [C(java.lang.Integer 和 [C 位于加载器“bootstrap”的模块 java.base 中) (测试.java:4)`
来源:
class test {
public static void main(String[] args) {
test2 tstOb = new test2();
String tstStr = String.valueOf(tstOb.testMet1(1));
}
}
class test2 {
@SuppressWarnings("unchecked")
<T> T testMet1(int a) {
Integer tstInt = 5;
return (T) tstInt;
}
}
<T> T testMet1(int a)通过运行以下代码可以了解该方法返回的内容:
class test {
public static void main(String[] args) {
test2 tstOb = new test2();
Class tstCl = tstOb.testMet1(1).getClass();
System.out.print(tstCl);
}
}
class test2 {
@SuppressWarnings("unchecked")
<T> T testMet1(int a) {
Integer tstInt = 5;
return (T) tstInt;
}
}
执行结果如下:
类 java.lang.Integer
因此,该方法String.valueOf(tstOb.testMet1(1))将类型的对象Integer作为参数,并且应该像直接传递给定对象一样表现,但这并没有发生。