2015-01-03 4 views

ответ

16

Я не уверен, что вы подразумеваете, создавая выражение лямбда для сеттера.

Похоже, вы пытаетесь это сделать, чтобы назначить ссылку на метод подходящего функционального интерфейса. Лучшее совпадение соответствует BiConsumer:

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

Можете ли вы объяснить, почему это работает? Я подумал, что «BiConsumer » может быть назначен только для чего-то типа ((Student a, String b) -> a.setName (b) ». Но подпись 'setName' имеет только один параметр. – T3rm1

+0

@ T3rm1 работает, потому что 'Student a' является одним параметром и' setName' имеет один параметр. Таким образом, потребитель берет целевой объект, а также параметр setter в качестве параметров. – Mukund

Смежные вопросы