Java 如何构建基于lambda的fluent构建器?
我想创建一个基于Java 如何构建基于lambda的fluent构建器?,java,lambda,Java,Lambda,我想创建一个基于Java.util.Optional的Java fluent builder来简化我的生活 我希望能够这样称呼它: Person person = Optional.supply(Person::new) .with(Person::setName,"Andrew") .with(Person::setAge,32) .with(Person::setAddress,"10 Downi
Java.util.Optional
的Java fluent builder来简化我的生活
我希望能够这样称呼它:
Person person = Optional.supply(Person::new)
.with(Person::setName,"Andrew")
.with(Person::setAge,32)
.with(Person::setAddress,"10 Downing Street")
.get();
在我的示例中,我将新类称为Optional,与原始类完全相同。事实上,我复制了它的源代码,无法扩展可选的
我可以实现构造函数
public static <T> Optional<T> supply(Supplier<T> supplier)
{
T value = requireNonNull(supplier).get();
return new Optional<T>(value);
}
公共静态可选电源(供应商)
{
T值=requirennull(供应商).get();
返回新的可选值;
}
但是我不知道如何实现fluent setter。它应该允许我在持有的实体中设置一个值并返回可选的self
setter是目标属性类型的消费者
那么,我如何构建自己的fluent可选设置呢?经过一番研究,我发现setter只是T和V的双消费者,其中T是实体类型,V是属性类型 任何想要构建流畅的可选setter的人都可以使用
public <H> Optional<T> with(BiConsumer<T, H> setter, H value)
{
requireNonNull(setter);
if (!isPresent())
return empty();
setter.accept(this.value, value);
return this;
}
public可选(双消费者设置器,H值)
{
requirennull(setter);
如果(!isPresent())
返回空();
setter.accept(this.value,value);
归还这个;
}
为子孙共享