Cause 4 : Signature de méthode incorrecte
Lorsque vous appelez une méthode, le compilateur vérifie si une méthode avec ce nom et le nombre et les types d'arguments corrects (la signature de la méthode) existe. S'il ne trouve pas de méthode correspondant à l'appel, vous obtiendrez une erreur 'cannot find symbol' (symbole introuvable).
Créons un exemple.
Créez un nouveau fichier Java nommé IncorrectMethodCallExample.java dans le répertoire /home/labex/project.
touch /home/labex/project/IncorrectMethodCallExample.java
Ouvrez /home/labex/project/IncorrectMethodCallExample.java dans l'éditeur WebIDE et ajoutez le code suivant :
public class IncorrectMethodCallExample {
public static void greet(String name) {
System.out.println("Hello, " + name);
}
public static void main(String[] args) {
greet("Alice", 25); // Calling greet with incorrect arguments
}
}
Enregistrez le fichier en appuyant sur Ctrl + S ou en utilisant File > Save.
Compilez le code :
javac /home/labex/project/IncorrectMethodCallExample.java
Vous verrez un message d'erreur similaire à celui-ci :
/home/labex/project/IncorrectMethodCallExample.java:8: error: cannot find symbol
greet("Alice", 25); // Calling greet with incorrect arguments
^
symbol: method greet(String,int)
location: class IncorrectMethodCallExample
1 error
Le message d'erreur indique que le compilateur ne trouve pas de méthode nommée greet qui accepte une String et un int comme arguments. Il sait qu'il existe une méthode greet, mais la signature greet(String,int) ne correspond pas à la méthode greet(String) définie.
Pour corriger cela, assurez-vous que votre appel de méthode correspond à la signature de la méthode.
Ouvrez à nouveau /home/labex/project/IncorrectMethodCallExample.java et modifiez la méthode main :
public class IncorrectMethodCallExample {
public static void greet(String name) {
System.out.println("Hello, " + name);
}
public static void main(String[] args) {
greet("Alice"); // Calling greet with the correct argument
}
}
Enregistrez le fichier en appuyant sur Ctrl + S ou en utilisant File > Save.
Compilez à nouveau le code :
javac /home/labex/project/IncorrectMethodCallExample.java
La compilation devrait maintenant réussir.
Exécutez le code :
java IncorrectMethodCallExample
La sortie sera :
Hello, Alice
Cela démontre que le nombre et les types d'arguments dans un appel de méthode doivent correspondre à la définition de la méthode pour éviter l'erreur 'cannot find symbol' (symbole introuvable) liée aux signatures de méthode.