Почему вот так нормально отрабатывает
PrintStream stream = System.out;
System.setOut(stream); а, вот так уже нетSystem.setOut(System.out);
и почему вот так можно ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(byteArrayOutputStream);
System.setOut(printStream); а вот так нет System.setOut(new PrintStream(new ByteArrayOutputStream()));