此規則會標示下列採用 java.io.OutputStream 且沒有字集的 Java 類別建構子:
java.io.PrintStreamjava.io.PrintWriterjava.io.OutputStreamWriter
採用不含 Charset 參數的 OutputStream 的建構子簽章預設會使用 Charset.defaultCharset() 編碼。
如果要包裝的 OutputStream 是 PrintStream,它會保留自己的字集,導致忽略它。
當 PrintWriter 覆蓋 System.out/err時,這尤其有問題,因為使用 JEP400 時,預設字集現在是 UTF-8 ,而標準 I/O 會保留在 native.encoding中。
作為這項變更的一部分, java.io.PrintStream 現在會定義字集 () 方法來傳回列印串流的字集。
如需相關資訊,請參閱 JDK-8276970