Конструктор StringBuilder принимает объект StringBuilder - почему?

Класс StringBuilder определяет четыре конструктора, и ни один из них не принимает StringBuilder, но следующие компиляции:

StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));

Означает ли это, что анонимный объект StringBuilder каким-то образом преобразуется в String внутри компилятора?

Ответ 1

A StringBuilder - CharSequence (он реализует этот интерфейс) и существует конструктор с CharSequence. Вот почему данный код компилируется:

StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));

Что делает этот конструктор, просто инициализируйте новый StringBuilder с содержимым данного CharSequence. Результат будет таким же, как

StringBuilder sb = new StringBuilder("Hello");