簡體   English   中英

將對象數組轉換回整數數組時遇到麻煩

[英]Trouble with casting array of objects back to an array of integers

當我運行它時,出現錯誤:

線程“主”中的異常java.lang.ClassCastException:[Ljava.lang.Object; 無法轉換為[Ljava.lang.Integer; 在Main.main(Main.java:30)

public class Main 
{ 
    private interface Function<R, D> 
    { 
        public R apply(D parameter);
    }

    public static void main(String[] args) 
    {           
        // Example 1
        Function<Integer, Integer> function = new CalculateSuccessor();
        Integer[] integerArray = {1, 3, 4, 2, 5};
        PrintArray(map(function, integerArray)); // map returns {2, 4, 5, 3, 6}  <--- line 30
    }

    @SuppressWarnings({"unchecked"})
    public static <R, D> R[] map(Function<R, D> function, D[] array)
    {
        R[] results = (R[]) new Object[array.length];

        // Iterate through the source array, apply the given function, and record results
        for (int i = 0; i < array.length; i++)
        {
            results[i] = (R)function.apply(array[i]);
        }

        return results;  
    }

    public static <T> void PrintArray(T[] array)
    {
        for (T element : array)
        {
            System.out.println(element.toString());
        }   
    } 
}

問題是結果數組被創建為新的Object [array.length]。 強制轉換(R [])不會將此數組轉換為其他類型,它只是告訴編譯器將其視為R []。 請參見快速Java問題:將Objects數組轉換為所需類的數組 創建通用類型的數組有點麻煩-您可以在Google上搜索各種解決方案,例如, 如何在Java中創建通用數組? -但最簡單的方法通常是使用列表而不是數組:您可以使用新的ArrayList <R>創建它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM