我不太了解如何最好地实现以下泛型层次结构的构建器模式。

基类

@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会为您完成此操作。

10-07 15:56
查看更多