Finale: Polymorphe Schalter deaktivieren ~
Variablen ändern: Variablen können nicht geändert werden
MODIFIERENKLASSE: Klassen können nicht vererbt werden
Modifikationsmethode: Die Methode kann nicht umgeschrieben werden
Schließlich: Der letzte Anweisungsblock, der in der Ausnahmeverarbeitung verwendet wird
Ob eine Ausnahme generiert wird oder nicht, muss sie ausgeführt werden ~~~
Java -Code
öffentliche endgültige Klasse Schließlich test {public static void main (String [] args) {try {thrower New nullPointerException (); } catch (nullPointerexception e) {System.out.println ("Das Programm bringt eine Ausnahme"); } endlich {system.out.println ("Der schließlich wurde Block ausgeführt"); }}}Verwendung von endgültigen Schlüsselwörtern in Java
Im Vergleich zu anderen Sprachmodellen ist das endgültige Schlüsselwort die beste Ergänzung zum Java -Ausnahme -Handling -Modell. Die endgültige Struktur ermöglicht es dem Code, immer auszuführen, unabhängig davon, ob die Ausnahme auftritt. Verwenden Sie schließlich, um den internen Zustand eines Objekts aufrechtzuerhalten und nicht nachemmory-Ressourcen aufzuräumen. Ohne endlich wird Ihr Code verwirrend sein. Der folgende Code zeigt beispielsweise, wie Sie Code schreiben müssen, um nicht nachemory-Ressourcen zu kosten, ohne endlich zu verwenden:
Java.net importieren.*; Java.io importieren. try {Socket Socket = ss.accept (); // Andere Code hier ...} catch (ioException e) {ss.close (); // 1 werfen e; } // ... ss.close (); // 2}}Dieser Code erstellt einen Socket und ruft die Akzeptanzmethode auf. Bevor Sie die Methode verlassen, müssen Sie diesen Sockel schließen, um Ressourcen Schwachstellen zu vermeiden. Um diese Aufgabe zu erledigen, nennen wir Close AT // 2, was die letzte Aussage der Methode ist. Aber was passiert, wenn eine Ausnahme im Try -Block auftritt? In diesem Fall kommt es nie vor, dass der schließende Anruf AT // 2 niemals passiert. Daher müssen Sie diese Ausnahme erfassen und einen weiteren Anruf einfügen, um AT bei // 1 zu schließen, bevor Sie diese Ausnahme neu aufgeben. Dies stellt sicher, dass die Steckdose geschlossen ist, bevor die Methode ausgeht.
Das Schreiben von Code wie diesen ist sowohl umständlich als auch fehleranfällig, aber es ist ohne endlich unerlässlich. Leider können Programmierer in Sprachen ohne endgültigen Mechanismus vergessen, ihren Code auf diese Weise zu organisieren, was zu Schwachstellen von Ressourcen führt. Die endgültige Klausel in Java löst dieses Problem. Mit schließlich kann der vorherige Code in das folgende Formular umgeschrieben werden:
Java.net importieren.*; Importieren Sie Java.io.*; try {Socket Socket = ss.accept (); // Andere Code hier ...} endlich {ss.close (); }}}Der endgültige Block stellt sicher, dass die enge Methode immer ausgeführt wird, unabhängig davon, ob eine Ausnahme innerhalb des Try -Blocks ausgestellt wird. Daher wird sichergestellt, dass die enge Methode immer vor dem Verlassen der Methode aufgerufen wird. Auf diese Weise können Sie sicher sein, dass der Sockel geschlossen ist und dass Sie keine Ressourcen durchgesickert haben. In dieser Methode besteht kein weiterer Fangblock. Der Fangblock wird im ersten Beispiel bereitgestellt, um den Sockel zu schließen, jetzt wird dies endlich geschlossen. Wenn Sie einen Fangblock angeben, wird der Code im endgültigen Block nach Abschluss des Fangblocks ausgeführt.
Der endgültige Block muss mit dem Block Versuch oder Versuch/Catch verwendet werden. Darüber hinaus ist es nicht möglich, den Try -Block zu beenden, ohne seinen endgültigen Block auszuführen. Wenn der endgültige Block existiert, wird er immer ausgeführt. (Diese Anweisung ist aus dieser Sicht korrekt. Es gibt eine Möglichkeit, den Try -Block zu beenden, ohne den endgültigen Block auszuführen. Wenn der Code ein System ausführt.