Я думаю, что в вашем вопросе что-то не так, дело в том, что сам PrintStream использует OutputStream, который передается ему при его создании, как вы можете видеть здесь .Таким образом, вы должны передать правильный PrintStream в методе, который записывается в ваш OutputStream.Я думаю, что вам просто нужно сделать метод, такой как:
PrintStream createPrintStream (OutputStream out, тип String (или что вы хотите));
и затем передать возвращенный поток печати в методкоторый будет писать на нем.
Может быть, вам поможет шаблон проектирования фабрики Шаблон проектирования фабрики