我们有 getter 的 lambda 表达式如下:
Function<Student, String> studentNameGetter = Student::getName;
setter 的 lambda 表达式怎么样?
我不确定为 setter 创建 lambda 表达式是什么意思。
您想要做的是将方法引用分配给合适的功能接口。在这种情况下,最佳匹配是
BiConsumer
:
BiConsumer<Student, String> studentNameSetter = Student::setName;
只是举一个具体的例子,其中类似的东西可能有用:
public static <T extends Serializable> void ifNotNull(Consumer<T> setter, Supplier<T> supplier) {
if (supplier != null && supplier.get() != null) {
setter.accept(supplier.get());
}
}
public static void main(String[] args) {
Model a = new Model();
a.setName("foo");
Model b = new Model();
b.setName("bar");
ifNotNull(b::setName, a::getName);
}
ifNotNull
方法接收一个setter和一个getter,但仅当getter的结果不为空时才调用setter。