Во-первых, боюсь, в вашем вопросе есть небольшая ошибка. В классе Console нет строки записи метода. Вместо этого класс Console предоставляет метод writer (), который возвращает PrintWriter. Этот писатель печати имеет println ().
В чем разница между
System.console().writer().println("hello from console");
и
System.out.println("hello system out");
Если вы запустите приложение из командной строки, думаю, нет никакой разницы. Но если консоль недоступна, System.console () возвращает null, а System.out все еще существует. Это может произойти, если вы запустите свое приложение и выполните перенаправление STDOUT в файл.
Вот пример, который я только что реализовал.
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");
}
}
Когда я запустил приложение из командной строки, я получил следующее:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
но когда я перенаправил STDOUT в файл ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
Строка 8 есть console.writer().println()
.
Вот содержимое / tmp / test
console=null
Надеюсь, мои объяснения помогут.