2015-01-03 35 views
5

Chúng ta có thể Lambda biểu thức getter như sauLambda biểu thức setter

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

Làm thế nào về việc tạo ra biểu thức lambda cho setter?

Trả lời

16

Tôi không chắc chắn ý của bạn là gì bằng cách tạo biểu thức lambda cho setter.

Có vẻ như bạn đang cố gắng thực hiện là gán tham chiếu phương thức cho Giao diện chức năng phù hợp. Trong trường hợp đó, kết quả phù hợp nhất là BiConsumer:

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

Bạn có thể giải thích lý do tại sao tính năng này hoạt động không? Tôi nghĩ rằng một 'BiConsumer ' chỉ có thể được gán cho một cái gì đó như '(Student a, String b) -> a.setName (b)'. Nhưng chữ ký của 'setName' chỉ có một tham số. – T3rm1

+0

@ T3rm1 nó hoạt động vì 'Sinh viên a' là một tham số &' setName' có một tham số. Vì vậy, người tiêu dùng lấy đối tượng đích cũng như tham số setter làm tham số của nó. – Mukund