Während an jemandes Maven Java-Projekt in Eclipse sucht, bemerkte ich, dass eine der gespeicherten Ausführungskonfigurationen hat folgenden Maven Befehl auszuführen:Wie steuert System.out die Ausgabe an die Konsole in Eclipse?
test -Dtest=fooTest -Dcom.awesomesite=System.out
Wenn ich fooTest.java Datei überprüft, ich folgende Aussagen bemerkt:
public final static String BAR = "com.awesomesite";
....
this.whereToWrite = System.getProperty(BAR);
Offensichtlich stellt eine Instanzvariable "whereToWrite" dar, wohin die Ausgabedaten gehen sollen. Da ich Java-Anfänger bin, möchte ich nur verstehen, wie System.out direkte Ausgabe auf der Konsole gedruckt wird.
Irgendwo im Inneren von Eclipse muss es 'System.out' setzen, um auf die Konsolenansicht zu zeigen. System.out ist ein modifizierbares statisches Feld –
@LanceJava es ist eigentlich 'final'. Es wird durch Reflektion gesetzt, nachdem der JVM angefangen hat, soweit ich mich erinnere – SomeJavaGuy
Reflection nicht erforderlich (und ich glaube nicht, dass Sie ein letztes Feld durch Reflexion setzen können), da ist ein [setOut (...)] (https : //docs.oracle.com/javase/7/docs/api/java/lang/System.html#setOut%28java.io.PrintStream%29) Methode. Das letzte Feld zu schätzen ist ein Wrapper und der Delegierte ist veränderbar –