Привет. Можно понять, почему StringReader и BufferedReader при попытке вывести их в консоль, выводят своё место в памяти. Происходит это, так как мы передали им в конструктор строку или файл: StringReader(в его конструкторе уже есть наша строка), InputStreamReader или FileReader и т.п. То есть, их либо нужно сначала прочитать, либо строка у нас уже есть. Напротив, при записи во StringWriter, вывести нормальную строку мы можем, что логично. Мы что-то долго записывали(возможно через цикл) или сериализовывали и теперь можем удобно вывести. Тогда у меня возникает вопрос: почему в декораторе этого StringWriter(который, по сути, должен быть круче), а именно класса BufferedWriter, мы имеем toString(возможно из Object), выводящий адрес памяти этого конкретного обьекта, как и вышеупомянутые имплементации Reader? Только там оправданно, а тут неясно и неудобно. С чем это может быть связано?