gpt4 book ai didi

java - 将对象数组转换回整数数组时出现问题

转载 作者:行者123 更新时间:2023-12-01 04:19:05 25 4
gpt4 key购买 nike

当我运行这个时,我收到错误:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer; at 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());
}
}
}

最佳答案

问题是结果数组被创建为 new Object[array.length]。强制转换 (R[]) 不会将此数组转换为其他类型,它只是告诉编译器将其视为 R[]。请参阅Quick Java question: Casting an array of Objects into an array of my intended class 。创建泛型类型的数组有点令人讨厌 - 您可以通过谷歌搜索各种解决方案,例如How to create a generic array in Java? - 但通常最简单的方法是使用列表而不是数组:您可以使用 new ArrayList

创建它

关于java - 将对象数组转换回整数数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com