java – 返回一个带有对象数组返回类型的int数组

我正在做这样的事情:

public Object [] getApple() {
    return new int[4];
}

但Java编译器不允许这样做.
它说无法从int []转换为Object [].

如果我做这样的事情:

public Object  getApple() {
    return new int[4];
}

它汇编得很好.
任何人都可以解释为什么int []不能隐式地转换为Object []?

最佳答案
int不是Objects,这就是原因.它们是原始数据类型,它们起着特殊的作用,并且不在具有全父对象的类树中.

第二个例子有效,因为int []数组本身可以解释为Object.

您可以使用包装类Integer,它是Object的子类:

public Object[] getApple() {
    return new Integer[4];
}

由于自动装箱,你可以使用类似于int []的方法.所以,如果你这样做

Integer[] values = (Integer[]) getApple();
values[1] = 5;

Java会自动将5插入到表示5的相应Integer对象中,然后将此Integer添加到数组中.

如果你这样做也会发生

int val = values[2];

Java将从Integer对象中取消装箱,并为您提供一个int,因为val的类型为int.

请注意,自动装箱对数组不起作用,因此Java不会自动将int []转换为Integer [].它只适用于int到Integer,反之亦然(类似于其他原语,如double等).

转载注明原文:java – 返回一个带有对象数组返回类型的int数组 - 代码日志