Das Folgende ist von Wikipedia, einer Erklärung der statischen Typprüfung und der Überprüfung des dynamischen Typs:
• Statische Typprüfung: Ein Prozess der Überprüfung der Sicherheitstypsicherheit basierend auf dem Quellcode des Programms;
• Dynamische Typüberprüfung: Der Prozess der Überprüfung der Sicherheit der Typ während der Programmläufe;
Java verwendet eine statische Überprüfung des Typs, um das Programm während der Kompilierung zu analysieren, um sicherzustellen, dass keine Typfehler vorliegen. Die Grundidee besteht nicht darin, während der Laufzeit Typfehler auftreten zu lassen.
Der folgende Code ist ein Beispiel. Nach dem Verständnis werden Sie besser verstehen, wie die Überprüfung der statischen Java funktioniert.
Codebeispiel
Angenommen, wir haben die folgenden Klassen A und B und B erbt A.
Klasse A {a me () {return this;} public void doa () {System.out.println ("do a");}} Klasse B erweitert ein {public void dob () {System.out.println ("do b");}}}}}} Erstens, wie wird der Anruf bei New B (). Me () zurückkehren? Objekt A oder B?
Die ME () -Methode wird erklärt, ein A -Objekt zurückzugeben. Während der Zusammenstellung weiß der Compiler nur, dass er ein A -Objekt zurückgibt. Es gibt jedoch während der Laufzeit B -Objekt zurück, da B die Methode von A erbt und sich selbst zurückgibt.
Wie funktioniert statische Überprüfung?
Die folgende Codezeile ist illegal, auch wenn die Methode DOB () vom B -Objekt aufgerufen wird. Das Problem ist, dass der Referenztyp A ist. Beim Kompilieren des Geräts kennt der Compiler seinen realen Typ nicht, sodass er es als Typ A. als Typ A behandelt.
// illegaleNew b (). me (). dob ();
Daher kann nur der folgende Code aufgerufen werden:
// legalNew b (). me (). doa ();
Wir können seinen Typ jedoch wie folgt auf B werfen:
// legal ((b) neu b (). me ()). dob ();
Als nächstes fügen wir eine C -Klasse hinzu:
Klasse C erweitert einen {public void dobad () {System.out.println ("do c");}} Anschließend wird die folgende Code -Anweisung überprüft:
// legal ((c) neu b (). me ()). bebad ();
Der Compiler kennt seinen wirklichen Typ nicht, aber eine Ausnahme wird während der Laufzeit ausgelöst, da Typ B nicht in Typ C konvertiert werden kann.
Das obige ist die detaillierte Erläuterung der Beispiele dafür, wie die statische Überprüfung von Java vom Herausgeber Ihnen vorgestellt wird. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!