Во-первых, я боюсь, что ваш вопрос содержит небольшую ошибку.В классе Console отсутствует метод writeline.Вместо этого класс Console предоставляет метод writer (), который возвращает PrintWriter.Этот писатель печати имеет println ().
Теперь, в чем разница между
System.console().writer().println("hello from console");
и
System.out.println("hello system out");
Если вы запускаете приложение из командной строки, я думаю, что тамнет разницыНо если консоль недоступна, System.console () возвращает ноль, а 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
Надеюсь, мои объяснения помогут.