2013-09-26 81 views
0

map函數只是遍歷整數數組並將函數應用於它,然後將其添加到輸出數組。我得到這個錯誤,我似乎無法找到它將對象投射到整數。 map函數返回一個Integer數組,並將其發送給printArray,它接受一個I​​nteger數組。有任何想法嗎?Ljava.lang.Object;不能投射到[Ljava.lang.Integer;

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>

+5

把剩下的代碼 - printArray和map。 – monkjack

+0

擁有堆棧跟蹤和更多代碼將會很棒。 –

+0

我認爲它是因爲你使用泛型Function 不是100%確定。 –

回答

0

我假設你printArray方法需要一個Object []

一個Object []不是整數的「超級」實例的定義[]即使對象是一個超類整數的。

假設這個代碼是有效的:

Object[] array = new Integer[10]; 

那麼這也將是有效的

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

但後者應該是不可能的。因此數組的「繼承」限制。

也是一樣的列表例如

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

它會給你一個編譯器錯誤。

+0

添加導入對不起,我應該發佈的答案,他說它解決了他的問題在評論中。 –

0

它因爲你使用泛型Function<Integer,Integer>番石榴試圖將你傳遞的值轉換爲整數,但你實際上傳遞了對象。

相關問題