2010-11-04 13 views
0

enter code here bonjour, tout le monde, quelqu'un peut expliquer ce qui est mon problème dans cette fonction:problème dans la fonction générique

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; 
} 
} 

Je reçois une erreur:

The method op(Y, X) in the type SumFunction<Y,X> is not applicable for the arguments (X, Y) 

je dois utiliser cette fonction, comment Puis-je le faire, merci pour toutes les suggestions

+0

afficher le code de la méthode op() –

+0

C'est ce que je commentais d'abord, mais si vous jetez un oeil à l'erreur, je pense que vous avez la réponse;) –

+0

Sylvain, vous avez raison. –

Répondre

1

Je pense que vous devez appeler f.op (d'abord, inArray [i]). La méthode op() de SumFunction semble prendre un Y comme premier argument, et un X comme second.

0

Je pense rapide serait que la méthode op dans SumFunction a la signature suivante:

Y op(Y, X); 

Mais vous passez d'abord l'argument X et Y. Ainsi, rétablissez arguments dans la méthode appeler, il serait:

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

Cependant, il serait préférable, si vous avez publié le code pour le SumFunction classe.

0

Vous utilisez

f.op(X value1, Y value2); 

Revérifiez si cela correspond à la déclaration SumFunction#op. On dirait que SumFunction#op attend les arguents dans un ordre différent.

0

Il semble que la fonction op() attend f.op(first, inArr[i]) à la place

Questions connexes