2015-01-03 16 views
5

Possiamo lambda espressione per getter, come di seguitoLambda espressione per setter

Function<Student, String> studentNameGetter = Student::getName; 

ne dite di creare un'espressione lambda per il setter?

risposta

16

Non sono sicuro di cosa intendi creando un'espressione lambda per il setter.

L'aspetto che si sta tentando di fare è assegnare il riferimento al metodo su un'interfaccia funzionale adeguata. In tal caso, la corrispondenza migliore è con un BiConsumer:

BiConsumer<Student, String> studentNameSetter = Student::setName; 
+1

Puoi spiegare perché funziona? Ho pensato che un 'BiConsumer ' può essere assegnato solo a qualcosa come '(Student a, String b) -> a.setName (b)'. Ma la firma di 'setName' ha solo un parametro. – T3rm1

+0

@ T3rm1 funziona perché 'Studente a' è un parametro e' setName' ha un parametro. Quindi il consumatore prende come parametro l'oggetto target e il parametro setter. – Mukund