enter code here
大家好,有人可以解释一下这个函数中我的问题是什么:
public class Summer{
public <X,Y> Y[] sum(X[] inArr, Y first, SumFunction<Y,X> f, Y[] outArr){
for(int i = 0; i < inArr.length; i++){
outArr[i] = f.op(inArr[i], first); //here I have problem
first = outArr[i];
}
return outArr;
}
}
我收到错误:
The method op(Y, X) in the type SumFunction<Y,X> is not applicable for the arguments (X, Y)
我需要使用此功能,我该怎么做,谢谢你的任何建议
答案 0 :(得分:1)
我认为你必须调用f.op(首先是inArray [in])。 Sum Function的op()方法似乎将Y作为第一个参数,将X作为第二个参数。
答案 1 :(得分:0)
我的快速猜测是 SumFunction 中的方法 op 具有以下签名:
Y op(Y, X);
但是你首先传递X参数然后传递Y.所以,在方法调用中恢复参数,所以它将是:
outArr[i] = f.op(first, inArr[i]);
但是,如果您发布 SumFunction 类的代码会更好。
答案 2 :(得分:0)
你正在使用
f.op(X value1, Y value2);
仔细检查这是否与声明SumFunction#op
匹配。看起来,SumFunction#op
期望争论者的顺序不同。
答案 3 :(得分:0)
op()
函数似乎期待f.op(first, inArr[i])
而不是