Cette règle marque les constructeurs de classe Java suivants qui prennent un java.io.OutputStream et aucun jeu de caractères:
java.io.PrintStreamjava.io.PrintWriterjava.io.OutputStreamWriter
Les signatures de constructeur qui utilisent OutputStream sans paramètres de jeu de caractères utilisent par défaut le codage Charset.defaultCharset() .
Cela entraîne un problème si le flux OutputStream à encapsuler est un PrintStream, qui contient son propre jeu de caractères, le conduisant à être ignoré.
Cela est particulièrement problématique lorsque PrintWriter encapsule System.out/err, car avec JEP400 , le jeu de caractères par défaut est désormais UTF-8 alors que les E-S standard restent dans native.encoding.
Dans le cadre de cette modification, java.io.PrintStream définit désormais une méthode charset () pour renvoyer le jeu de caractères du flux d'impression.
Pour plus d'informations, voir JDK-8276970