Синтаксис java точка перед пустым пространством что означает

Рейтинг: 0Ответов: 1Опубликовано: 04.06.2023
     var next = InlineKeyboardButton.builder()
        .text("Next").callbackData("next")           
        .build();
 var next = InlineKeyboardButton.builder()
        .text("Next").callbackData("next")           
        .build();

Ответы

▲ 6Принят

Эта точка НЕ перед пустым пространством, а для вызова метода у объекта, который возвращается из предыдущего метода -- так называемый "гладкий" или "плавный" программный интерфейс.

Шаблон проектирования Builder, показанный в вопросе,-- один из наиболее популярных способов применения "плавного" интерфейса для создания объектов со множеством параметров (статья на хабре).

Упрощенно говоря, для некоего класса InlineKeyboard создаётся класс-строитель InlineKeyboardBuilder, с теми же полями, что и поля в основном классе, но сеттеры которого возвращают ссылку на текущий экземпляр билдера.
Также реализуется метод build(), возвращающий экземпляр нужного класса.

public class InlineKeyboardBuilder {
    private String text;
    private String callbackData;

    public InlineKeyboardBuilder() {}

    public InlineKeyboardBuilder text(String text) { 
        this.text = text;
        return this;
    }

    public InlineKeyboardBuilder callbackData(String data) {
        this.callbackData = data;
        return this;
    }

    public InlineKeyboard build() {
        return new InlineKeyboard(text, callbackData);
    }
}

Классы-билдеры удобно генерить при помощи соответствующей Lombok аннотации @Builder.