Per prima cosa ho paura che la tua domanda contenga un piccolo errore. Non c'è metodo writeline nella console di classe. Invece class Console fornisce method writer() che restituisce PrintWriter. Questo writer di stampa ha println().
Ora, qual è la differenza tra
System.console().writer().println("hello from console");
e
System.out.println("hello system out");
Se si esegue l'applicazione da linea di comando Penso che non c'è alcuna differenza. Ma se la console non è disponibile, System.console() restituisce null mentre System.out esiste ancora. Questo può accadere se invochi la tua applicazione ed esegui 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 il seguente:
$ java TestConsole
[email protected]
hello from console
ma quando ho reindirizzato lo STDOUT su file ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
linea 8 è console.writer().println()
.
Ecco il contenuto di/tmp/test
console=null
Spero che le mie spiegazioni aiutano.
Vedere http://stackoverflow.com/questions/2369731/java-console-applications-is-system-out-still-the-way-to-go –
anche console.writeline non è un metodo java (è .net) ... ma ho capito cosa stai chiedendo :) –