Имя интерфейса для функций, возвращающих значение - PullRequest
0 голосов
/ 27 апреля 2019

Это может показаться глупым вопросом, но, пожалуйста, потерпите меня.Я застрял, выбирая имя для интерфейса

Я хочу классифицировать функции на основе того, возвращают ли они значения или нет.Вот несколько вариантов, которые я сделал, и почему я их отверг.Пожалуйста, предложите несколько имен:)

1 Ответ

1 голос
/ 27 апреля 2019

Вы можете повторно использовать интерфейсы, предоставляемые Java, или, если их недостаточно, следовать соглашению об именах в пакете java.util.function :

Аналогично VoidFunction:

Consumer<T> Представляет операцию, которая принимает один входной аргумент и не возвращает результата.

BiConsumer<T,​U> Представляет операцию, которая принимает два входных аргумента и не возвращает результата.

Аналогично ReturningFunction:

Function<T,​R> Представляет функцию, которая принимает один аргумент и выдает результат.

BiFunction<T,​U,​R> Представляет функцию, которая принимает два аргумента и выдает результат.

Supplier<T> Представляет поставщика результатов.

Для "output to stdout" вам, вероятно, вообще не нужен интерфейс. Вместо этого вам нужен конкретный класс, подобный следующему:

final class SystemOutConsumer<A> implements Consumer<A> {

    private final BiConsumer<PrintStream, A> printStreamABiConsumer;

    public SystemOutConsumer(
            final BiConsumer<PrintStream, A> printStreamABiConsumer) {

        this.printStreamABiConsumer = printStreamABiConsumer;
    }

    public void accept(final A a) {

        printStreamABiConsumer.accept(System.out, a);
    }
}
...