我不太了解如何最好地实现以下泛型层次结构的构建器模式。
基类
@lombok.Data
public class Node<T> {
private T data;
private String source;
}
儿童班
@lombok.Data
public class MyNode extends Node<MyNode> {
private String firstDummy;
private String secondDummy;
}
无论如何,将匿名生成器类应用于父类并在子类中扩展它吗?
更新
如果我有一个像父母这样的匿名建造者,
public class Node<T> {
private T data;
private final String source;
public static abstract class Builder<S extends Node> {
private String source;
public Builder<S> withSource(String source) {
this.source = source;
return this;
}
public abstract S build();
}
public static Builder<?> builder() {
return new Builder<Node>() {
@Override
public Node build() {
return new Node(this);
}
};
}
protected Node(Builder<?> builder) {
this.source = builder.source;
}
}
然后,如何在
T
类中为Node
实现构建器? 最佳答案
如果您想练习即时实现构建器,那么可以,您可以实现它们。 @nixgadget的提示很好。
但是,如果您只需要一个生成器,则添加注释@Builder,Lombok会为您完成此操作。