From f715b5da3424adacc5a7f1e001e1dd7fa6f50385 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 9 Jan 2013 15:29:01 -0800 Subject: [PATCH] altoslib: Clean up AltosRecord clone methods Make the AltosRecord version abstract and then implement suitable versions in each subclass by creating copying constructors for each class. Signed-off-by: Keith Packard --- altoslib/AltosRecord.java | 12 ++---------- altoslib/AltosRecordMM.java | 10 +++++++--- altoslib/AltosRecordNone.java | 4 ++++ altoslib/AltosRecordTM.java | 8 +++++--- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/altoslib/AltosRecord.java b/altoslib/AltosRecord.java index 09169515..2c4b6fa5 100644 --- a/altoslib/AltosRecord.java +++ b/altoslib/AltosRecord.java @@ -126,6 +126,8 @@ public abstract class AltosRecord implements Comparable , Cloneable return tick - o.tick; } + abstract public AltosRecord clone(); + public void copy(AltosRecord old) { seen = old.seen; version = old.version; @@ -144,16 +146,6 @@ public abstract class AltosRecord implements Comparable , Cloneable kalman_height = old.kalman_height; } - public AltosRecord clone() { - try { - AltosRecord n = (AltosRecord) super.clone(); - n.copy(this); - return n; - } catch (CloneNotSupportedException e) { - return null; - } - } - public AltosRecord() { seen = 0; version = 0; diff --git a/altoslib/AltosRecordMM.java b/altoslib/AltosRecordMM.java index 9f529234..546f3055 100644 --- a/altoslib/AltosRecordMM.java +++ b/altoslib/AltosRecordMM.java @@ -131,10 +131,10 @@ public class AltosRecordMM extends AltosRecord { mag = old.mag; } + + public AltosRecordMM clone() { - AltosRecordMM n = (AltosRecordMM) super.clone(); - n.copy(this); - return n; + return new AltosRecordMM(this); } void make_missing() { @@ -167,6 +167,10 @@ public class AltosRecordMM extends AltosRecord { make_missing(); } + public AltosRecordMM(AltosRecordMM old) { + copy(old); + } + public AltosRecordMM() { super(); make_missing(); diff --git a/altoslib/AltosRecordNone.java b/altoslib/AltosRecordNone.java index ca0a5fe3..d4ea305f 100644 --- a/altoslib/AltosRecordNone.java +++ b/altoslib/AltosRecordNone.java @@ -28,6 +28,10 @@ public class AltosRecordNone extends AltosRecord { super.copy(old); } + public AltosRecordNone clone() { + return new AltosRecordNone(this); + } + public AltosRecordNone() { super(); } diff --git a/altoslib/AltosRecordTM.java b/altoslib/AltosRecordTM.java index 9530be31..f6ed4966 100644 --- a/altoslib/AltosRecordTM.java +++ b/altoslib/AltosRecordTM.java @@ -149,9 +149,7 @@ public class AltosRecordTM extends AltosRecord { } public AltosRecordTM clone() { - AltosRecordTM n = (AltosRecordTM) super.clone(); - n.copy(this); - return n; + return new AltosRecordTM(this); } void make_missing() { @@ -177,6 +175,10 @@ public class AltosRecordTM extends AltosRecord { make_missing(); } + public AltosRecordTM(AltosRecordTM old) { + copy(old); + } + public AltosRecordTM() { super(); make_missing(); -- 2.30.2