diff --git a/src/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java b/src/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java index b26ab600..d622c1c8 100644 --- a/src/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java +++ b/src/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java @@ -15,8 +15,6 @@ public Builder sauceInside() { @Override public Calzone build() { return new Calzone(this); } - - @Override protected Builder self() { return this; } } private Calzone(Builder builder) { diff --git a/src/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java b/src/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java index 3e8c04f8..ab02117f 100644 --- a/src/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java +++ b/src/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java @@ -18,7 +18,6 @@ public Builder(Size size) { return new NyPizza(this); } - @Override protected Builder self() { return this; } } private NyPizza(Builder builder) { diff --git a/src/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java b/src/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java index 77925cda..910e6ee2 100644 --- a/src/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java +++ b/src/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java @@ -18,8 +18,13 @@ public T addTopping(Topping topping) { abstract Pizza build(); - // Subclasses must override this method to return "this" - protected abstract T self(); + @SuppressWarnings("unchecked") + protected T self() { + // this is always of type T + // so there is no need to override + // self in subclasses + return (T) this; + } } Pizza(Builder builder) {