我创建了这个 GenericBuilder 类(几乎没有受到如何在 Java 8 中实现构建器模式的启发?)
public class GenericBuilder<T> {
private final T instance;
private GenericBuilder(T instance) {
this.instance = instance;
}
public static <T> GenericBuilder<T> of(Supplier<T> instantiator) {
return new GenericBuilder<T>(instantiator.get());
}
public <U> GenericBuilder<T> with(BiConsumer<T, U> consumer,
U value) {
((Consumer<T>) t -> consumer.accept(t, value)).accept(instance);
return this;
}
public <U> GenericBuilder<T> with(BiConsumer<T, U> consumer,
Supplier<U> supplier) {
return with(consumer, supplier.get());
}
public T build() {
return instance;
}
}
但是第二个 with() 方法抛出
不兼容的类型:无法推断类型变量 U(参数不匹配;java.lang.Long 不是函数式接口)
当我执行以下操作时:
GenericBuilder.of(Dto::new)
.with(Dto::setId, entity::getId)
.build();
请注意,实体是实体类的一个实例。