setter 的 Lambda 表达式

问题描述 投票:0回答:2

我们有 getter 的 lambda 表达式如下:

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

setter 的 lambda 表达式怎么样?

java lambda setter getter
2个回答
72
投票

我不确定为 setter 创建 lambda 表达式是什么意思。

您想要做的是将方法引用分配给合适的功能接口。在这种情况下,最佳匹配是

BiConsumer

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

0
投票

只是举一个具体的例子,其中类似的东西可能有用:

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。

© www.soinside.com 2019 - 2024. All rights reserved.