Как сделать объединение в цепочку метода в Java? o.m1 () .m2 () .m3 () .m4 ()

Я видел во многих нотацию кода Java, что после метода мы называем другого, вот пример.

Toast.makeText(text).setGravity(Gravity.TOP, 0, 0).setView(layout).show();

Поскольку Вы присматриваете за вызовом makeText по возврату мы звоним setGravity и до сих пор

Как я могу сделать это со своими собственными классами? Я должен сделать что-либо специальное?

36
задан Pentium10 20 May 2010 в 20:00
поделиться

3 ответа

Этот шаблон называется «Fluent Interfaces» (см. Wikipedia )

Просто верните это; из методов вместо того, чтобы ничего возвращать.

Так, например,

public void makeText(String text) {
    this.text = text;
}

будет выглядеть как

public Toast makeText(String text) {
    this.text = text;
    return this;
}
87
ответ дан 27 November 2019 в 05:20
поделиться

Из вашего примера:

Toast.makeText (текст) .setGravity (Gravity.TOP, 0, 0) .setView (layout) .show ();

Каждый метод в цепочке должен возвращать класс или интерфейс. Следующий метод в цепочке должен быть частью возвращаемого класса.

Начнем с тоста. Метод makeText, который определен как статический метод в классе Toast, должен возвращать класс или интерфейс. Здесь он возвращает экземпляр класса Gravity.

Метод setGravity, который определен в классе Gravity, возвращает экземпляр класса View,

Метод setView, который определен в классе View, возвращает экземпляр класса JPanel.

Эта цепочка может быть записана шаг за шагом.

Gravity gravity = Toast.makeText(text);
View view       = gravity.setGravity(Gravity.TOP, 0, 0);
JPanel panel    = view.setView(layout);
panel.show();

Запись цепочки как цепочки удаляет все промежуточные переменные экземпляра из исходного кода.

4
ответ дан 27 November 2019 в 05:20
поделиться

Найдите в Google шаблон конструктора или свободный интерфейс, чтобы получить более подробную информацию об этом.

Вернуть this в конце метода может помочь в большинстве случаев.

3
ответ дан 27 November 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: