我有一些Java 8代码,如下面的代码片段.
public class Test { static protected> T[] myFunction(T[] arr) { // do stuff... return arr; } public static void main(String[] args) { int[] a = new int[] {1,4,25,2,5,16}; System.out.println(Arrays.toString(myFunction(a))); } }
当我尝试运行它时,我收到以下错误:
线程"main"中的异常java.lang.Error:未解决的编译问题:
LottoResult类型中的方法myFunction(T [])不适用于参数(int [])
为什么会发生这种情况,我如何重写它以便能够将int[]
数组传递给myFunction
?
数组T[]
意味着数组是某种引用类型T
,而您传递的是基元数组(int[]
).这就是您收到编译错误的原因.
为了使其正常工作,您需要:
Integer[] a = new Integer[] {1,4,25,2,5,16};
这将创建一个引用类型(Integer[]
)的数组,因为将发生自动装箱.