【发布时间】:2014-02-23 17:44:44
【问题描述】:
我正在为学校学习java,主题是通用方法。我需要编写一个具有通用方法的应用程序来“填充”具有相同元素的任何类型的数组。但它不起作用......任何人都可以帮助我:
package pack.switchshift;
import java.lang.reflect.Array;
public class Filler {
public static void main(String [] args) {
int[] intArr = new int[10];
String[] stringArr = new String[10];
double[] doubleArr = new double[10];
genFill(intArr, 0);
genFill(stringArr, "0");
genFill(doubleArr, 0.0);
for (int element : intArr){
System.out.print(element);
}
}
private static <T> void genFill(T[] arr, T element) {
for (int i = 0; i < arr.length; i++) {
arr[i] = element;
}
}
}
我尝试了多种方法并花了几个小时研究,但我仍然没有得到它。
线程“main”java.lang.Error 中的异常:未解决的编译问题:
Filler类型中的方法genFill(T[], T)不适用于参数(int[], int)Filler类型中的方法genFill(T[], T)不适用于 pack.switchshift.Filler.main(Filler.java:11) 处的参数(double[], double)
【问题讨论】:
-
对于原始类型,您必须使用它们的盒装版本。
-
T在这种情况下没有用;你的方法签名应该只是private static void genFill(Object[] arr, Object element)