泛型函数中的问题

时间:2010-11-04 09:16:27

标签: java

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)

我需要使用此功能,我该怎么做,谢谢你的任何建议

4 个答案:

答案 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])而不是