import java.util.Arrays;
public class FanXing {
public static void printMatrix(T[][] matrix){
for(int i=0;i<matrix.length;i++){
System.out.println(Arrays.toString(matrix[i]));
}
}
public static void main(String[] args) {
double[][] doubleMatrix= new double[][]{{1.1,1.2},{2.1,2.2}};
printMatrix(doubleMatrix);
}
}
什么原因呢,该如何实现?
------解决思路----------------------
import java.util.Arrays;
public class Test{
public static <T> void printMatrix(T[][] matrix){
for(int i=0;i<matrix.length;i++){
System.out.println(Arrays.toString(matrix[i]));
}
}
public static void main(String[] args) {
Object[][] doubleMatrix= new Object[][]{{1.1,1.2},{2.1,2.2}};
printMatrix(doubleMatrix);
}
}
T会被泛型擦除为Object。
------解决思路----------------------
虽然有擦除,但是有补偿机制,依然能知道原有类型,所以使用Double类型没有任何问题。相反,你改成Object,只会使得原来要求为double的数据变得不安全。比如new Object[][]{{1.1,‘a’},{2.1,2.2}};也将编译通过,这和原题意是相背的。
------解决思路----------------------
double不能用于泛型,要用Double