diff --git a/prototype/src/main/java/com/iluwatar/prototype/Beast.java b/prototype/src/main/java/com/iluwatar/prototype/Beast.java index ecae07063466..04adc5ae6d4d 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Beast.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Beast.java @@ -37,6 +37,12 @@ public Beast(Beast source) { } @Override - public abstract Beast copy(); + public Beast clone() { + try { + return (Beast) super.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } } diff --git a/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java b/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java index 830bad95c72a..cda5faf8f4db 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java +++ b/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java @@ -41,8 +41,8 @@ public ElfBeast(ElfBeast elfBeast) { } @Override - public ElfBeast copy() { - return new ElfBeast(this); + public ElfBeast clone() { + return (ElfBeast) super.clone(); } @Override diff --git a/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java b/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java index 7f5183349d99..79db54f64ed0 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java +++ b/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java @@ -41,8 +41,8 @@ public ElfMage(ElfMage elfMage) { } @Override - public ElfMage copy() { - return new ElfMage(this); + public ElfMage clone() { + return (ElfMage) super.clone(); } @Override diff --git a/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java b/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java index b45ae693e114..df32f6b518c9 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java +++ b/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java @@ -28,7 +28,7 @@ /** * ElfWarlord. */ -@EqualsAndHashCode +@EqualsAndHashCode(callSuper = true) public class ElfWarlord extends Warlord { private final String helpType; @@ -43,12 +43,12 @@ public ElfWarlord(ElfWarlord elfWarlord) { } @Override - public ElfWarlord copy() { - return new ElfWarlord(this); + public ElfWarlord clone() { + return (ElfWarlord) super.clone(); } @Override public String toString() { return "Elven warlord helps in " + helpType; } -} \ No newline at end of file +} diff --git a/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java b/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java index 772cb27f8318..3f3ff5bb8ac0 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java +++ b/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java @@ -39,21 +39,21 @@ public class HeroFactoryImpl implements HeroFactory { * Create mage. */ public Mage createMage() { - return mage.copy(); + return mage.clone(); } /** * Create warlord. */ public Warlord createWarlord() { - return warlord.copy(); + return warlord.clone(); } /** * Create beast. */ public Beast createBeast() { - return beast.copy(); + return beast.clone(); } } diff --git a/prototype/src/main/java/com/iluwatar/prototype/Mage.java b/prototype/src/main/java/com/iluwatar/prototype/Mage.java index a1a84735884f..89941e83a80c 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Mage.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Mage.java @@ -37,6 +37,12 @@ public Mage(Mage source) { } @Override - public abstract Mage copy(); + public Mage clone() { + try { + return (Mage) super.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } } diff --git a/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java b/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java index 4c89363564c8..71a23f443867 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java +++ b/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java @@ -29,7 +29,7 @@ /** * OrcBeast. */ -@EqualsAndHashCode(callSuper = false) +@EqualsAndHashCode(callSuper = true) @RequiredArgsConstructor public class OrcBeast extends Beast { @@ -41,8 +41,8 @@ public OrcBeast(OrcBeast orcBeast) { } @Override - public OrcBeast copy() { - return new OrcBeast(this); + public OrcBeast clone() { + return (OrcBeast) super.clone(); } @Override diff --git a/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java b/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java index a7361ec801cd..6cd970251d82 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java +++ b/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java @@ -41,8 +41,8 @@ public OrcMage(OrcMage orcMage) { } @Override - public OrcMage copy() { - return new OrcMage(this); + public OrcMage clone() { + return (OrcMage) super.clone(); } @Override diff --git a/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java b/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java index 1096cc9798b2..75b7969c59c7 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java +++ b/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java @@ -41,8 +41,8 @@ public OrcWarlord(OrcWarlord orcWarlord) { } @Override - public OrcWarlord copy() { - return new OrcWarlord(this); + public OrcWarlord clone() { + return (OrcWarlord) super.clone(); } @Override diff --git a/prototype/src/main/java/com/iluwatar/prototype/Prototype.java b/prototype/src/main/java/com/iluwatar/prototype/Prototype.java index 2581b5215eaa..ff73636d06d5 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Prototype.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Prototype.java @@ -26,8 +26,8 @@ /** * Prototype. */ -public interface Prototype { +public interface Prototype extends Cloneable { - Object copy(); + Prototype clone(); } diff --git a/prototype/src/main/java/com/iluwatar/prototype/Warlord.java b/prototype/src/main/java/com/iluwatar/prototype/Warlord.java index 7176ccf0cb3f..9c3ec1a1227e 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Warlord.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Warlord.java @@ -37,6 +37,12 @@ public Warlord(Warlord source) { } @Override - public abstract Warlord copy(); + public Warlord clone() { + try { + return (Warlord) super.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } } diff --git a/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java b/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java index b22f7ba8e759..ecf555b1a822 100644 --- a/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java +++ b/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java @@ -56,7 +56,7 @@ static Collection dataProvider() { void testPrototype(P testedPrototype, String expectedToString) { assertEquals(expectedToString, testedPrototype.toString()); - final var clone = testedPrototype.copy(); + final var clone = testedPrototype.clone(); assertNotNull(clone); assertNotSame(clone, testedPrototype); assertSame(testedPrototype.getClass(), clone.getClass());