Supponiamo che ci sia una tipica Java Bean:Riferimento metodo Java 8 concatenato?
class MyBean {
void setA(String id) {
}
void setB(String id) {
}
List<String> getList() {
}
}
E vorrei creare un modo più astratto di chiamare i setter con l'aiuto di un BiConsumer:
Map<SomeEnum, BiConsumer<MyBean, String>> map = ...
map.put(SomeEnum.A, MyBean::setA);
map.put(SomeEnum.B, MyBean::setB);
map.put(SomeEnum.List, (myBean, id) -> myBean.getList().add(id));
C'è un modo per sostituire la lambda (myBean, id) -> myBean.getList().add(id)
con un riferimento al metodo concatenato, ad esempio (myBean.getList())::add
o myBean::getList::add
o qualcos'altro?
Che fai 'map.put (SomeEnum.List, (MyBean, id) -.> MyBean.getList() aggiungere (id))? – Andremoniy
No, non c'è. I riferimenti al metodo non supportano il concatenamento. Nel tuo esempio non sarebbe chiaro quale dei due metodi debba ricevere il secondo parametro. Ad ogni modo, perché lo vuoi? – Holger
@Andremoniy Inserisce una mappa, un 'BiConsumer' dato sotto forma di lambda. – m3th0dman