【问题标题】:Builder pattern with Java generics使用 Java 泛型的构建器模式
【发布时间】:2020-02-13 18:30:02
【问题描述】:

我不太明白如何最好地为以下泛型层次结构实现构建器模式。

基类,

@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;
    }
}

然后如何在Node 类中实现T 的构建器?

【问题讨论】:

  • this question 可能会给你一些见解。
  • 太棒了。谢谢@jrook

标签: java generics builder


【解决方案1】:

如果你想练习我实现构建器,那么是的,你可以实现它们。 @nixgadget 的提示很好。

但如果你只需要一个构建器,添加一个注解@Builder,Lombok 会为你完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多