In der System
class, in
, out
und err
sind statische Felder. Diese Felder sind zum Beispiel deklariert:
Warum deklarieren Sie nullInputStream()
statt null
?
Der Quellcode hat den folgenden Kommentar:
%Vor% Kurz gesagt, da System.in
eine statische letzte Variable ist, würde der Compiler, wenn sie auf null
gesetzt wäre, sie als Konstante betrachten und alle Referenzen auf System.in
in anderen Klassen durch% co_de ersetzen % (das bedeutet Inlining). Was offensichtlich alles funktionsunfähig machen würde. Ein systemeigener Code muss verwendet werden, um den Wert dieses null
final-Werts (der normalerweise niemals geändert werden sollte) nach der Initialisierung des Systems zu ersetzen.
Um fortzufahren: Es wird verwendet, um eine Compileroptimierung zu vermeiden, die in diesem sehr speziellen Fall nicht gemacht werden sollte, weil System.in ein letztes Feld ist, das sich ändern kann, was normalerweise unmöglich ist.
Sie liegen falsch.
Im Java-Quellcode wird es als
geschrieben %Vor%nicht
%Vor% Sie können auf den Quellcode für die Klasse System
hier .
Tags und Links java