Questa regola contrassegna i seguenti costruttori di classi Java che utilizzano un java.io.OutputStream e nessuna serie di caratteri:
java.io.PrintStreamjava.io.PrintWriterjava.io.OutputStreamWriter
Le firme del costruttore che utilizzano OutputStream senza i parametri Charset utilizzano la codifica Charset.defaultCharset() .
Ciò causa un problema se OutputStream è un PrintStream, che contiene la propria serie di caratteri e la porta ad essere ignorata.
Ciò è particolarmente problematico quando PrintWriter include System.out/err, poiché con JEP400 , la serie di caratteri predefinita è ora UTF-8 mentre l'I/O standard rimane in native.encoding.
Come parte di questa modifica, java.io.PrintStream ora definisce un metodo charset () per restituire la serie di caratteri del flusso di stampa.
Per ulteriori informazioni, consultare JDK-8276970