Lambda表达式用于setter函数

35

我们有以下用于getter的lambda表达式:

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

针对setter使用lambda表达式如何?

1个回答

68

我不确定你所说的创建lambda表达式是什么意思。

看起来你正在尝试将方法引用分配给适当的函数式接口。在这种情况下,最佳匹配是一个BiConsumer

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

3
你能解释一下为什么这个会起作用吗?我认为 BiConsumer<Student, String> 只能被赋值给像 (Student a, String b) -> a.setName(b) 这样的东西。但是 setName 的签名只有一个参数。 - T3rm1
1
@T3rm1 这个代码之所以能够工作,是因为 Student a 是一个参数,而 setName 也只有一个参数。因此,消费者函数将目标对象以及设置器参数作为其参数。 - Mukund Jalan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接