Это пример из лекции и у меня 1 вопрос по нему.
Почему при вызове метода printSomething(); он не печатает нам текст сразу , а ждет пока мы что-то сделаем с ним
Будь то замена знаков или преобразование в заглавные буквы
testString.printSomething(); // по идее должно вывести текст который задан в методе "it's a text for testing"
String result = outputStream.toString();
String result2 = result.toUpperCase(); //
System.setOut(printStream);
System.out.println(result2); // а тут вывести его еще раз , но уже преобразованный
Но почему он выводит только один раз строку ?
public static void main(String[] args) throws Exception
{
//запоминаем настоящий PrintStream в специальную переменную
PrintStream consoleStream = System.out;
//Создаем динамический массив
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//создаем адаптер к классу PrintStream
PrintStream stream = new PrintStream(outputStream);
//Устанавливаем его как текущий System.out
System.setOut(stream);
//Вызываем функцию, которая ничего не знает о наших манипуляциях
printSomething();
//Преобразовываем записанные в наш ByteArray данные в строку
String result = outputStream.toString();
//Возвращаем все как было
System.setOut(consoleStream);
}
public static void printSomething()
{
System.out.println("Hi");
System.out.println("My name is Amigo");
System.out.println("Bye-bye!");
}