Nel java.util.function
pacchetto di Java 8 abbiamo:
- Funzione : accetta un argomento, produce un risultato.
- Consumatore : accetta un argomento, non produce nulla.
- Fornitore : non accetta argomenti, produce un risultato.
- ... : altri casi che trattano primitivi, 2 argomenti, ecc ...
Ma devo gestire il caso " non prende argomenti, non produce nulla ".
Non c'è niente per questo in java.util.functionnal
.
Quindi, la domanda è:
Qual è il nome di " una funzione che non accetta argomenti e non restituisce nulla "?
In Java 8, la sua definizione sarebbe:
@FunctionalInterface
public interface InsertANameHere {
void execute();
}
Executor esiste già e ha un altro scopo: " Un oggetto che esegue attività eseguibili inviate ". La firma non corrisponde ( execute(Runnable):void
) e non è nemmeno un'interfaccia funzionale .
Eseguibile esiste, ma è fortemente collegato al contesto di threading:
- Il pacchetto
java.lang
non lo èjava.util.function
. - Il javadoc afferma: " L'interfaccia Runnable dovrebbe essere implementata da qualsiasi classe le cui istanze sono destinate ad essere eseguite da un thread ".
- Il nome "Runnable" suggerisce un codice in esecuzione all'interno di un thread.
Runnable
sia obsoleto a questo punto, perché un Runnable viene utilizzato anche da classi diverse da Thread
( Executor
ad esempio).
Runnable
s possa essere solo .run()
per Thread
s. In realtà sono molto comunemente usati esattamente per lo scopo descritto nella domanda
java.util.function
pacchetto.