この規則により、 java.io.OutputStream を取り、文字セットを持たない以下の Java クラス・コンストラクターにフラグを立てます。
java.io.PrintStreamjava.io.PrintWriterjava.io.OutputStreamWriter
Charset パラメーターを指定せずに OutputStream を取るコンストラクター・シグニチャーは、デフォルトで Charset.defaultCharset() エンコードを使用します。
これにより、ラップする OutputStream が PrintStreamである場合に問題が発生します。これは独自の文字セットを保持し、無視されます。
これは、 PrintWriter が System.out/errをラップする場合に特に問題があります。これは、 JEP400 では、デフォルトの文字セットが UTF-8 になり、標準入出力は native.encodingのままになるためです。
この変更の一部として、 java.io.PrintStream は、印刷ストリームの文字セットを戻す charset () メソッドを定義するようになりました。
詳しくは、 JDK-8276970 を参照してください。