我想创建一个基于java.util.Optional
的Java流利构建器来简化我的生活
我希望能够称之为:
Person person = Optional.supply(Person::new)
.with(Person::setName,"Andrew")
.with(Person::setAge,32)
.with(Person::setAddress,"10 Downing Street")
.get();
在我的例子中,我将我的新类称为原始版本的可选项。实际上我复制了它的源代码无法扩展可选。
我可以实现构造函数
public static <T> Optional<T> supply(Supplier<T> supplier)
{
T value = requireNonNull(supplier).get();
return new Optional<T>(value);
}
但后来我不知道如何实现流利的二传手。它应该允许我在被保持的实体中设置一个值并返回可选的 self 。
Setter是目标属性类型的Consumer
。
那我如何建立自己的流利的可选项?
答案 0 :(得分:1)
经过一些研究后,我发现setter只是T和V的BiConsumer
s,其中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;
}
分享后代