Почему ссылка на класс PrintStream объявлена ​​как статическая переменная в классе System в Java? - PullRequest
0 голосов
/ 10 марта 2012

Могу ли я использовать метод PrintStream println() без участия класса System?

Ответы [ 2 ]

5 голосов
/ 10 марта 2012

Абсолютно - System.out и System.err - это просто значения PrintStream, связанные со стандартным выходом и стандартной ошибкой.

Вы можете создать PrintStream из любого OutputStream или просто, задавимя файлаОднако он всегда будет использовать системную кодировку по умолчанию.

Предпочитать PrintWriter, что приведет к произвольному Writer.Тем не менее, это будет все же подавлять IOException от броска, что не кажется мне хорошей идеей.

Предпочитают BufferedWriter:

BufferedWriter wrapper = new BufferedWriter(writer);
try {
    wrapper.write(...);
    wrapper.newLine();
} finally {
    wrapper.close();
}
1 голос
/ 10 марта 2012

Системный класс не « ссылается на класс PrintStream ».Он имеет два статических поля типа PrintStream: out и err.Поэтому, если вы хотите записать в поток вывода, вы используете System.out.Если вы хотите записать в поток ошибок, вы используете System.err.Если вы хотите написать в другой PrintStream, вы создаете его самостоятельно: new PrintStream(...).

...