Ursache 4: Inkorrekte Methodensignatur
Wenn Sie eine Methode aufrufen, prüft der Compiler, ob eine Methode mit diesem Namen und der korrekten Anzahl und den korrekten Typen von Argumenten (die Methodensignatur) existiert. Wenn er keine Methode findet, die dem Aufruf entspricht, erhalten Sie einen Fehler "cannot find symbol".
Erstellen wir ein Beispiel.
Erstellen Sie eine neue Java-Datei namens IncorrectMethodCallExample.java
im Verzeichnis /home/labex/project
.
touch /home/labex/project/IncorrectMethodCallExample.java
Öffnen Sie /home/labex/project/IncorrectMethodCallExample.java
im WebIDE-Editor und fügen Sie den folgenden Code hinzu:
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
}
}
Speichern Sie die Datei, indem Sie Strg + S
drücken oder File
> Save
verwenden.
Kompilieren Sie den Code:
javac /home/labex/project/IncorrectMethodCallExample.java
Sie sehen eine Fehlermeldung ähnlich dieser:
/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
Die Fehlermeldung weist darauf hin, dass der Compiler keine Methode namens greet
finden kann, die ein String
und ein int
als Argumente akzeptiert. Er weiß, dass es eine greet
-Methode gibt, aber die Signatur greet(String,int)
stimmt nicht mit der definierten greet(String)
-Methode überein.
Um dies zu beheben, stellen Sie sicher, dass Ihr Methodenaufruf mit der Methodensignatur übereinstimmt.
Öffnen Sie /home/labex/project/IncorrectMethodCallExample.java
erneut und ändern Sie die main
-Methode:
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
}
}
Speichern Sie die Datei, indem Sie Strg + S
drücken oder File
> Save
verwenden.
Kompilieren Sie den Code erneut:
javac /home/labex/project/IncorrectMethodCallExample.java
Die Kompilierung sollte nun erfolgreich sein.
Führen Sie den Code aus:
java IncorrectMethodCallExample
Die Ausgabe wird sein:
Hello, Alice
Dies zeigt, dass die Anzahl und die Typen der Argumente in einem Methodenaufruf mit der Methodendefinition übereinstimmen müssen, um den Fehler "cannot find symbol" im Zusammenhang mit Methodensignaturen zu vermeiden.