не является примером

аю Java 8 в действии, и автор говорит, что если у вас есть класс, который переопределяет метод toString, вам не нужно отображать поток в Strings при выполнении collect (joining ()). Пример:

    public static void main(String... args) {
        List<Person> people =
        Arrays.asList(
                new Person(23, "Paul"),
                new Person(23, "John"),
                new Person(23, "Greg"),
                new Person(24, "Greg"),
                new Person(25, "Paul")
        ); // Person overrides toString

        String peopleString = people
                .stream()
                .collect(Collectors.joining());

        System.out.println(peopleString);

    }

Тем не менее, это не работает, и только это:

String peopleString = people
                .stream()
                .map(Person::toString)
                .collect(Collectors.joining());

работает, значит, книга не так? Кроме того, почему он говорит (я немного изменил формулировку):

Также обратите внимание, что если у класса есть метод toString, возвращающий строку, вы получите тот же результат без необходимости отображать исходный поток с помощью функции, извлекающей имя.

Когда каждый объект должен наследоватьtoString изObject?

Ответы на вопрос(1)

Ваш ответ на вопрос