Nel java.util.functionpacchetto 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.langnon 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.
Runnablesia obsoleto a questo punto, perché un Runnable viene utilizzato anche da classi diverse da Thread( Executorad esempio).
Runnables possa essere solo .run()per Threads. In realtà sono molto comunemente usati esattamente per lo scopo descritto nella domanda
java.util.function pacchetto.