Sto cercando un modo per richiamare più metodi di argomento ma utilizzando un costrutto lambda
. Nella documentazione si dice che lambda
è utilizzabile solo se può essere mappato su un'interfaccia funzionale.Java 8: Lambda con argomenti variabili
voglio fare qualcosa di simile:
test((arg0, arg1) -> me.call(arg0, arg1));
test((arg0, arg1, arg2) -> me.call(arg0, arg1, arg2));
...
C'è un modo che si può fare questo con eleganza senza definire 10 interfacce, una per ogni argomento contare?
Aggiorna
uso più interfacce estendono da un'interfaccia non metodo e sovraccaricare il metodo.
Esempio per due argomenti:
interface Invoker {}
interface Invoker2 extends Invoker { void invoke(Object arg0, Object arg1);}
void test(Invoker2 invoker, Object ... arguments) {
test((Invoker)invoker, Object ... arguments);
}
void test(Invoker invoker, Object ... arguments) {
//Use Reflection or whatever to access the provided invoker
}
Spero in una possibilità di sostituire le interfacce 10 e le 10 invoker metodi di overload con un'unica soluzione.
Ho un caso d'uso ragionevole e per favore non fare domande del tipo "Perché dovresti fare una cosa del genere?" e 'Qual è il problema che stai cercando di risolvere?' o qualcosa del genere. Sappi solo che ci ho pensato e questo è un problema legittimo che cerco di risolvere.
Siamo spiacenti di aggiungere confusione chiamandolo invoker ma è in realtà quello che viene chiamato nel mio caso d'uso corrente (collaudo contratti di costruzione).
Fondamentalmente, come indicato sopra, pensare a un metodo che funziona con un diverso numero di attributi all'interno dello lambda
.
Risposta breve: no. Risposta lunga: nooooooooo. (Ma poi, cosa faresti comunque con una cosa del genere?) –
Tutti i tuoi argomenti sono dello stesso tipo? In caso affermativo hai esaminato l'utilizzo di varargs? Qual è un esempio concreto con il contesto di ciò che stai cercando di fare? – user4987274
Louis scusa, faccio un aggiornamento per te (update2). –