Innanzitutto temo che la tua domanda contenga un piccolo errore. Non esiste una scrittura del metodo nella console di classe. Invece la classe Console fornisce il metodo writer () che restituisce PrintWriter. Questo scrittore di stampe ha println ().
Qual è la differenza tra
System.console().writer().println("hello from console");
e
System.out.println("hello system out");
Se esegui la tua applicazione dalla riga di comando, penso che non ci siano differenze. Ma se la console non è disponibile System.console () restituisce null mentre System.out esiste ancora. Ciò può accadere se si richiama la propria applicazione e si esegue il reindirizzamento di STDOUT su file.
Ecco un esempio che ho appena implementato.
import java.io.Console;
public class TestConsole {
public static void main(String[] args) {
Console console = System.console();
System.out.println("console=" + console);
console.writer().println("hello from console");
}
}
Quando ho eseguito l'applicazione dal prompt dei comandi ho ottenuto quanto segue:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
ma quando ho reindirizzato lo STDOUT al file ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
La linea 8 è console.writer().println()
.
Ecco il contenuto di / tmp / test
console=null
Spero che le mie spiegazioni siano d'aiuto.