Ljava.lang.Object;无法转换为[Ljava.lang.Integer;

时间:2013-09-26 21:26:38

标签: java

map函数简单地遍历整数数组并将函数应用于它,然后将其添加到输出数组。我收到此错误,我似乎无法找到它将对象转换为整数的位置。 map函数返回一个Integer数组,并发送到printArray,它接受一个I​​nteger数组。有什么想法吗?

public static void main(String[] args) 
{
    Function<Integer,Integer> function = new CalculateSuccessor<Integer,Integer>();
    Integer[] integerArray={1,3,4,2,5};
    printArray(map(function, integerArray));
}

我删除了剩下的代码,因为找到的解决方案是在函数之后的<Integer, Integer>

2 个答案:

答案 0 :(得分:0)

我假设你的printArray方法需要一个Object []

即使Object是Integer的超类,Object []也不是Integer []的“超级”实例的定义。

假设此代码有效:

Object[] array = new Integer[10];

然后这也是有效的

array[0] = new Car("Mercedes");

但后者不可能。因此对数组的“继承”限制。

同样适用于列表例如

List<Object> myList = new ArrayList<Integer>();

它会给你一个编译器错误。

答案 1 :(得分:0)

因为你使用泛型Function<Integer,Integer> guava正在尝试将你传递给的值转换为Integer但是你实际上传递了Object。