2 Stimmen

Rückgabe eines Objekts einer dynamisch zugewiesenen Klasse aus einer Methode

Dafür gibt es wahrscheinlich eine sehr einfache Lösung, aber ich komme nicht dahinter...
Wir haben eine Reihe von Klassen der Form xQuantity, z.B. DistanceQuantity, AreaQuantity, usw., die eine Klasse DimensionQuantity erweitern. Nun kann man DistanceQuantity's oder AreaQuantity's usw. addieren oder subtrahieren, aber man kann sie nicht mischen. Alle Unterklassen haben Methoden wie add(), subtract(), ge() usw., es wäre also schön, die gemeinsame Logik in DimensionQuantity zu integrieren, aber ich stoße immer wieder auf Cast-Probleme.

Bisher ist das Beste, was mir eingefallen ist, ein Objekt zu erzeugen und es dann in der Methode der Unterklasse zu casten, aber es wäre schön, die Unterklasse add() (und die anderen ähnlichen Methoden) ganz loszuwerden! Hier ist der Code (mit einigen Sachen weggelassen):

In DistanceQuantity:

public DistanceQuantity add(DistanceQuantity d1) {
 Object o = new DistanceQuantity(scalar + d1.scalar, REF_UNIT);     
 return (DistanceQuantity) o;
    }

In DimensionMenge:

@SuppressWarnings({"rawtypes", "unchecked"})
  public Object add(DimensionQuantity d1)  {

 Class c1 = this.getClass();
 Class c2 = d1.getClass();
 if (c1 != c2)
    throw new RuntimeException();
 double d = scalar + d1.scalar;
 Constructor c = null;  
 c = c1.getConstructor(Double.TYPE, AbstractUnit.class);
 Object o = null;  
 o = c.newInstance(d, REF_UNIT);  
 return o;
    }

Kann jemand (oder mehrere) einen besseren Weg vorschlagen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X