Ma question est liée à la méthode ambiguïté.
ici Code 1 Imprimer "Premier" sans erreur d'ambiguït Même si foo (int i, int S) défini avec avoir les mêmes arguments deux fois. C'est une première méthode et l'exécute avec succès , mais si je modifie les deux procédés d'argumentation comme FOO (int I, Long S) et FOO (Long I, int D), il donne ci-dessous une erreur, alors ma question est de savoir pourquoi il affiche l'ambiguïte ici si dans le premier cas, il a fonctionné successivement. - p>
erreur - p> CODE 2 STRUT> P> Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method foo(int, long) is ambiguous for the type StaticFunc
at StaticFunc.main(StaticFunc.java:6)
3 Réponses :
Essayez d'appeler la méthode comme celle-ci:
foo(10,100l); foo(10l,100);
Je ne suis pas sûr de savoir comment votre premier code a été exécuté, comment il est prévu que vous devriez avoir obtenu - erreur: méthode foo (int, int) est déjà définie dans la classe staticfunc P>
Bien que la sortie du deuxième code est attendue, car le compilateur ne sait pas quelle méthode pour appeler.java compilateur ne considère qu'aucune d'entre elles est plus spécifique, d'où l'erreur d'appel ambiguë de la méthode. P>
Si vous souhaitez exécuter un deuxième code, vous pouvez appeler la fonction avec le paramètre long à l'aide de FOO (10L, 100) code> p>
En Java, vous pouvez dire au compilateur quel type de chiffres avez-vous, si vous regardez les signatures, vous avez: Vous avez une surcharge de la méthode, c'est bon , mais maintenant, lorsque vous utilisez les méthodes, vous avez des types différents comme des arguments de Vous pouvez le faire de plusieurs manières: P> foo code> p> foo(10, 100L)