2010-11-04 2 views
0

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

разместить код метода оп() –

+0

Вот что я заметил первый, но если вы посмотрите на ошибки, я думаю, что у вас есть ответ;) –

+0

Сильвен, ты прав. –

ответ

1

Думаю, вам нужно позвонить f.op (во-первых, inArray [i]). Метод op() SumFunction, по-видимому, принимает Y как первый аргумент, а X - второй.

0

Моя быстро было бы предположить, что метод оп в SumFunction имеет следующую подпись:

Y op(Y, X); 

Но сначала пройти Х аргумент, а затем Y. Таким образом, вновь обратиться аргументы в методе вызов, так что было бы:

outArr[i] = f.op(first, inArr[i]); 

Однако, было бы лучше, если бы вы разместили код для SumFunction класса.

0

Вы используете

f.op(X value1, Y value2); 

Двойной чек, если это соответствует декларации SumFunction#op. Похоже, SumFunction#op ожидает аргументов в другом порядке.

0

Похоже, что функция op() ожидает f.op(first, inArr[i]) вместо