我为一个类制作了一个函数式构建器,它的工作方式如下
new ComponentStatus.Builder()
.with($ -> {
$.name = element.getName();
$.state = element.getState();
$.status = element.getStatus();
$.description = element.getStatusDescription();
}).build();
这个班级是
public class ComponentStatus {
private final String name;
private final int state;
private final int status;
private final String description;
ComponentStatus(String name, int state, int status, String description) {
this.name = name;
this.state = state;
this.status = status;
this.description = description;
}
public static class Builder {
public String name;
public int state;
public int status;
public String description;
Builder with(
Consumer<Builder> builderFunction) {
builderFunction.accept(this);
return this;
}
ComponentStatus build() {
return new ComponentStatus(name, state, status, description);
}
}
}
它起作用了.现在,我想向其他类添加一个构建器.
with()
方法始终是相同的,所以我try 创建一个接口以保存在样板文件中
public interface Buildable {
default Buildable with(
Consumer<Buildable> builderFunction) {
builderFunction.accept(this);
return this;
}
Object build();
}
这不起作用,因为with()
返回Buildable
而不是<? extends Buildable>
,但是更改返回类型也不起作用.怎么办呢?