相关疑难解决方法(0)

具有递归类型参数的泛型类型以及抽象 self 方法如何允许方法链正常工作?

我正在阅读《Effective Java Edition 3》。在第 2 章第 14 页中,作者讨论了构建器模式并呈现了以下代码:

public abstract class Pizza {
    public enum Topping { HAM, MUSHROOM, ONION, PEPPER, SAUSAGE }
    final Set<Topping> toppings;
    abstract static class Builder<T extends Builder<T>> {
        EnumSet<Topping> toppings = EnumSet.noneOf(Topping.class);
        public T addTopping(Topping topping) {
            toppings.add(Objects.requireNonNull(topping));
            return self();
        }
        abstract Pizza build();
        // Subclasses must override this method to return "this"
        protected abstract T self();
    }
    Pizza(Builder<?> builder) {
        toppings = builder.toppings.clone(); // See Item 50
    }
}
Run Code Online (Sandbox Code Playgroud)

上述抽象类的实现:

public class …
Run Code Online (Sandbox Code Playgroud)

java generics design-patterns builder

2
推荐指数
1
解决办法
531
查看次数

标签 统计

builder ×1

design-patterns ×1

generics ×1

java ×1