Мои главные вызовы несколько классов, каждый из которых перенаправляет System.out, чтобы они могли перехватывать то, что было напечатано другим классом (даже если это плохая практика - я должен это сделать). Затем, после того, как все они закончатся, я хотел бы просто напечатать на экране с моим главным, но ничего не происходит.
Код в классе1, класс2:
doStuff() {
ByteArrayOutputStream outContent = new ByteArrayOutputStream();
System.setOut(new PrintStream(outContent));
...
Главный:
class1.doStuff();
class2.doStuff();
...
System.setOut(System.out); //set output back
System.out.println("Success!"); //print something. doesn't work!
Вы должны сохранить исходный System.out
. System.setOut()
изменяет System.out
, поэтому вы по существу делаете System.out = System.out;
что, конечно, ничего не делает.