【发布时间】:2015-07-10 09:12:27
【问题描述】:
请看下面的代码 -
class test {
public static void main(String args[]){
int[] somearray = {1, 2};
printarray(somearray);
}
static void printarray(Object[] array){
System.out.println(array[0]);
}
}
上面的代码将无法编译,因为printarray 方法不能接受原始数组。
或者这是一个自动装箱限制?如果是这样,那么我认为这是一个很大的限制。
【问题讨论】:
-
一个数组是一个对象,但是一个基元数组与
Objects的数组不兼容,因为基元不是对象,自动装箱可以't 处理那个转换。 -
"上面的代码不能编译,因为 printarray 方法不能接受原始数组。" - 不,代码不会编译,因为您没有为
args指定类型。将其更改为String[] args并编译正常。请将其编辑为您希望我们考虑的实际代码,它会产生您感兴趣的错误消息。 -
@JonSkeet 即使修正了主要方法签名,它也没有在 1.6.0_45 上为我编译,这是现在在 1.7/1.8 中工作的东西吗?
-
数组本身是对象。您似乎在混淆数组 是 和数组 包含 的内容。
-
是的,这就是为什么在提问时花点时间很重要,并确保您确实发布了您想要发布的代码。将来,将您看到的错误也包含在内会很有帮助,并且最好也遵循正常的 Java 命名约定。