我有一个方法,它接受 int[] 参数。我想给它传递一系列短裤。但我得到的只是“不兼容的类型:short[] 无法转换为 int[]”。这是为什么? 一个例子:
short[] arr = new short[2];
arr[0] = 8;
arr[1]=9;
example(arr);
example(int[] anArray){
}
据我所知,short 到 int 只是变宽,所以应该自动进行类型转换,不是吗? 那怎么通过呢? 谢谢。
最佳答案
你不能这样做,因为 short[]
不是 int[]
。此外,short
不是 int
,只是 Java 允许原始扩展转换以允许将 short
扩展为 >整数
。但是,对于原始类型的数组,没有这种原始扩展转换。
这迫使一些核心 Java API 接受许多不同类型的原始数组,例如 Arrays.sort
,它具有许多不同类型的原始数组的重载。
如果你想对 short[]
做你已经对 int[]
做的同样的事情,你必须提供一个重载方法,例如 example(short[] anArray)
。
JLS, Section 5.1 , 指定所有类型的转换,并特别禁止那些未在 5.1.12“禁止的转换”中列出的:
> Any conversion that is not explicitly allowed is forbidden.
未列出原始数组类型之间的转换,因此不允许。
关于java - 为什么我不能在 java 中传递一个短数组到接受 int 数组的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232318/