Это правило помечает следующие конструкторы класса Java , которые принимают java.io.OutputStream
и не имеют набора символов:
java.io.PrintStreamjava.io.PrintWriterjava.io.OutputStreamWriter
Сигнатуры конструктора, принимающие OutputStream без параметров Charset по умолчанию, используют кодировку Charset.defaultCharset() .
Это приводит к тому, что OutputStream для переноса является PrintStream, в которой хранится собственный набор символов, что приводит к игнорирум.
Это особенно проблематично, когда PrintWriter оболочек System.out/err, поскольку с
JEP400
, набор символов по умолчанию теперь UTF-8 , в то время как стандартный ввод-вывод остается в native.encoding.
В ходе этого изменения java.io.PrintStream теперь определяет метод charset () для возврата набора символов потока печати.
Дополнительная информация приведена в разделе JDK-8276970