Premièrement, je crains que votre question contienne une petite erreur. Il n'y a pas d'écriture de méthode dans la classe Console. Au lieu de cela, la classe Console fournit la méthode writer () qui renvoie PrintWriter. Ce graveur d'impression a println ().
Maintenant, quelle est la différence entre
System.console().writer().println("hello from console");
et
System.out.println("hello system out");
Si vous exécutez votre application à partir de la ligne de commande, je pense qu'il n'y a aucune différence. Mais si la console n'est pas disponible, System.console () renvoie null alors que System.out existe toujours. Cela peut se produire si vous appelez votre application et effectuez une redirection de STDOUT vers un fichier.
Voici un exemple que je viens de mettre en œuvre.
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");
}
}
Lorsque j'ai exécuté l'application à partir de l'invite de commande, j'ai obtenu ce qui suit:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
mais quand j'ai redirigé le STDOUT vers un fichier ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
La ligne 8 est console.writer().println()
.
Voici le contenu de / tmp / test
console=null
J'espère que mes explications vous aideront.