если установить вместо stream установить byteArrayOutputStream , то с помощью метода toString() эта строка переводится правильно. Почему? Как я понимаю, метод toString() не переопределен в PrintStream ?
Как понять, где метод toString(); переопределен, а где нет? Что можно про это почитать?
package com.javarush.task.task19.task1927;
import java.io.*;
/*
Контекстная реклама
*/
//В методе main подмени объект System.out написанной тобой ридер-оберткой.
// Твоя ридер-обертка должна выводить на консоль контекстную рекламу после каждого второго println-а.
// Вызови готовый метод printSomething(), воспользуйся testString.
// Верни переменной System.out первоначальный поток.
//
// Рекламный текст: "JavaRush - курсы Java онлайн"
public class Solution {
public static TestString testString = new TestString();
@Override
public String toString() {
return super.toString();
}
public static void main(String[] args) {
PrintStream stream = new PrintStream(new ByteArrayOutputStream());
PrintStream printStream=System.out;
System.setOut(stream);
testString.printSomething();
String s = stream.toString();
System.setOut(printStream);
System.out.println(s);
String ss[] = s.split("\n");
int count = 1;
for (int i = 0; i < ss.length; i++) {
if((count % 3) == 0){
System.out.println("JavaRush - курсы Java онлайн");
}
System.out.println(ss[i]);
count++;
}
}
public static class TestString {
public void printSomething() {
System.out.println("first");
System.out.println("second");
System.out.println("third");
System.out.println("fourth");
System.out.println("fifth");
}
}
}