W java.util.function
pakiecie Java 8 mamy:
- Funkcja : Bierze jeden argument, daje jeden wynik.
- Konsument : bierze jeden argument, nic nie produkuje.
- Dostawca : Nie bierze argumentu, daje jeden wynik.
- ... : Inne sprawy obsługujące operacje podstawowe, 2 argumenty itp.
Ale muszę sobie poradzić z przypadkiem „ nie bierze argumentu, nic nie produkuje ”.
W tym nie ma nic java.util.functionnal
.
Pytanie brzmi:
Jak nazywa się „ funkcja, która nie przyjmuje argumentów i niczego nie zwraca ”?
W Javie 8 jego definicją byłoby:
@FunctionalInterface
public interface InsertANameHere {
void execute();
}
Executor już istnieje i ma inny cel: „ Obiekt, który wykonuje przesłane zadania Runnable ”. Podpis nie pasuje ( execute(Runnable):void
) i nie jest nawet funkcjonalnym interfejsem .
Runnable istnieje, ale jest silnie powiązany z kontekstem wątków:
- Pakiet
java.lang
nie jestjava.util.function
. - Jawadoc stwierdza: „ Interfejs Runnable powinien być implementowany przez każdą klasę, której instancje mają być wykonywane przez wątek ”.
- Nazwa „Runnable” sugeruje trochę działającego kodu w wątku.
Runnable
jest w tym momencie nieaktualny, ponieważ Runnable jest również używany przez inne klasy niż Thread
( Executor
na przykład).
Runnable
S może być tylko .run()
przez Thread
sekundę. W rzeczywistości są one bardzo często używane dokładnie do celu opisanego w pytaniu
java.util.function
pakiecie.