Вы уже смотрите на Appendable и в нем нет конструкторов, это интерфейс, там только 3 абстрактных метода и все.
Фокус заключается в возврате самого себя. Это часто используемая фича в программировании, вы можете встретиться с ней, например, при использовании паттерна билдер.
Давайте на простом примере (сначала без интерфейса) рассмотрим возврат самомого себя
Создадим простой класс такого вида:
public class Test {
private String data;
public Test() {
this.data = "";
}
public Test add(String str) {
data += str;
return this;
}
@Override
public String toString() {
return data;
}
public static void main(String[] args) {
Test test = new Test()
.add("a")
.add("b")
.add("c");
System.out.println(test);
}
}
Если вы запустите этот код, то увидите в консоли abc
Мой метод add, помимо того, что занимается конкатинацией строки переменной data со строкой, находящейся в аргументах этого метода, содержит строку кода return this
Это занчаит что данный метод возвращает свой же экземпляр класса
Это позволяет мне в методе Main писать так
Test test = new Test()
.add("a")
.add("b")
.add("c");
Фактически когда я создал экземпляр класса Test, каждый последующий вызов метода add после выполнения конкатенации этот экземпляр (класса test) мне и вернул, поэтому эту конструкцю можно разделить на множество строк:
Test test = new Test();
test = test.add("a")
test = test.add("b")
test = test.add("c");
А теперь, если мой класс будет имплементировать интерфейс (например, наш Appendable), то для реализации его метиодов append мне точно также нужно будет в каждом из них написать return this
Таким образом мой метод по прежнему будет возвращать экземпляр класса Test, но теперь этот класс имплементирует Appendable, а между дочерним классом и родительским, как известно, отношение "is a", то есть Test теперь и есть Appendable.
Значит можно написать
Appendable appendable = new Test();
appendable = appendable.append("testString");
Или абсолютно тождественное, но проще в записи
Appendable appendable = new Test()
.append("testString");
Если есть вопросы - пишите