当我调用printArraypvsm 时,我不断收到的错误是:
Exception in thread "main" java.lang.ClassCastException:
java.base/[Ljava.lang.Object; cannot be cast to java.base/[Ljava.lang.Integer
我知道问题出在R[] result = (R[]) list.toArray(). 我不知道如何将 ArrayList 转换为数组并同时将其转换为泛型。注意我不能更改函数的参数map或添加任何新函数。
public class Homework2 {
public static void main(String[] args){
Function<Integer,Integer> function = new CalculateSuccessor();
Double[] d= {2.0,4.0,8.0};
Integer[] i= {2,4,8};
printArray(map(function,i));
}
@SuppressWarnings("unchecked")
public static <R,D> R[] map(Function<R,D> function, D[] array){
ArrayList<R> list = new ArrayList<>();
for (D element: array){
list.add(function.apply(element));
}
// THIS LINE OF DAMN CODE
R[] result = (R[]) list.toArray();
return result;
}
public static <R> void printArray(R[] array){
System.out.print("{ ");
for (R element: array){
System.out.print(element + ", ");
}
System.out.print("}");
}
public static class CalculateSuccessor implements Function<Integer,Integer> {
@Override
public Integer apply(Integer parameter) {
return parameter * 2;
}
} //End CalcSuc
} //End Homework2
在另一堂课我有
public interface Function<R,D> {
public R apply(D parameter);
}
你需要的function.apply。我的教授坚持我们使用它而不是导入函数。
缥缈止盈
富国沪深
相关分类