У java.util.function
пакеті Java 8 ми маємо:
- Функція : бере один аргумент, видає один результат.
- Споживач : Бере один аргумент, нічого не дає.
- Постачальник : не приймає аргументів, дає один результат.
- ... : Інші справи, що стосуються примітивів, 2 аргументи тощо ...
Але мені потрібно розібратися зі справою " не бере аргументів, нічого не дає ".
У цьому немає нічого java.util.functionnal
.
Отже, питання:
Як називається функція, яка не бере аргументів і нічого не повертає ?
У Java 8 його визначення було б:
@FunctionalInterface
public interface InsertANameHere {
void execute();
}
Виконавець вже існує і має іншу мету: " Об'єкт, який виконує подані завдання Runnable ". Підпис не відповідає ( execute(Runnable):void
) і не є навіть функціональним інтерфейсом .
Виконання існує, але воно сильно пов'язане з контекстом нитки:
- Пакет є
java.lang
, ніjava.util.function
. - Javadoc заявляє: " Інтерфейс Runnable повинен бути реалізований будь-яким класом, екземпляри якого призначені для виконання потоком ".
- Назва "Runnable" підказує деякий запущений код всередині потоку.
Runnable
застарілий на даний момент, тому що Runnable також використовується іншими класами, ніж Thread
( Executor
наприклад).
Runnable
s може бути .run()
лише Thread
s. Насправді вони дуже часто використовуються саме для цілей, описаних у питанні
java.util.function
упаковці.