Я не совсем понимаю, как лучше всего реализовать шаблон Builder для следующей иерархии дженериков.
Базовый класс,
@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
?