Polymorphie generischer Rückgabe-Typ

Sergeant_Pepper

Bekanntes Mitglied
Hallo,

ich habe eine Methode mit generischen Parametern. Ich möchte, dass der Rückgabewert (neues Objekt) den gleichen Typ hat wie p1.

Was haltet ihr von dieser Lösung:
Java:
public static <T extends MeinInterface> T berechneWert(MeinInterface p1, MeinInterface p2, MeinInterface p3)
    throws IllegalArgumentException, SecurityException, NoSuchMethodException,
     InstantiationException, IllegalAccessException, InvocationTargetException
{
    double wert1;
    double wert2;
    // Berechnung der Werte

    Class<T> type = (Class<T>) p1.getClass();
    Constructor<T> constructor = type.getConstructor(double.class, double.class);
    return (T) constructor.newInstance(wert1, wert2);
}

Gibt es etwas einfacheres oder besseres? Abgesehen von den vielen Exceptions, die man bündeln könnte...
 

xehpuk

Top Contributor
Dann gib
Code:
p1
doch denselben Typ:
Java:
public static <T extends MeinInterface> T berechneWert(T p1, MeinInterface p2, MeinInterface p3)
 

Sergeant_Pepper

Bekanntes Mitglied
OK, danke, das verkürzt die Signatur etwas:
Java:
public static <T extends MeinInterface> T berechneWert(T p1, T p2, T p3)

Aber was ist mit dem Anlegen des neuen, generischen Rückgabe-Objekts? (Zeile 9 bis 11 im 1. Beitrag)
 
S

SlaterB

Gast
auf die meisten Ts in den Zeilen kannst du verzichten, einen Generics-Anstrich hat Reflection eigentlich nie verdient,

Bewertung:
du erzeugst ein neues Objekt der übergebenen Klasse, in Java 1.4 auch nicht anders zu programmieren,

die ganze Methode ist nicht besonders generisch, aber hinter Generics steckt eh oft nicht viel,
also ist das hier lediglich vorhandene Casten auf den richtigen Rückgabetyp schon passend benannt..


per Reflection neue Objekte sind nie gut,
etwas besser wäre, wenn p1 per Methode ein passendes Objekt erzeugen würde, aber auch kein einfacher Standard,
schafft nur viele Methoden in vielen Klassen falls das Interface verbreitet ist,
da haben 3 Reflection-Zeilen auf einmal auch wieder was
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Interface, generischer Datentyp, Exception? Allgemeine Java-Themen 3
Q Java Generischer Datentyp Allgemeine Java-Themen 4
D Datentypen Klassenattribut aus Objekt in generischer Liste Allgemeine Java-Themen 15
J Fragen zu generischer doppelt verketteter Liste (bei fehlendem Grundverständnis) Allgemeine Java-Themen 1
M instanceof bei generischer Methode Allgemeine Java-Themen 3
S Problem mit generischer Liste :( Allgemeine Java-Themen 6
D Einfaches Nutzen von Plugins mittels generischer Methode Allgemeine Java-Themen 3
D Addition generischer Datentypen Allgemeine Java-Themen 12
D generischer Iterator und Set Allgemeine Java-Themen 2
D generischer Iterator mit verschiedenen Typen Allgemeine Java-Themen 3
G Problem bei generischer Klasse Allgemeine Java-Themen 7
R Objekttyp ermitteln das aus generischer Collection kommt Allgemeine Java-Themen 3
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
D Problem mit der Rückgabe von Raw-Types Allgemeine Java-Themen 2
S Java Problem bei der Rückgabe eines Arrays Allgemeine Java-Themen 19
R Methoden Rückgabe Arrays aufangen Allgemeine Java-Themen 29
M Einmalige Rückgabe eines Wertes? Allgemeine Java-Themen 8
H SQL Update "Rückgabe der DB als String?" Allgemeine Java-Themen 7
Redfrettchen Rückgabe nicht sinnvoll: Exception oder null zurück? Allgemeine Java-Themen 9
S Rückgabe Allgemeine Java-Themen 6
R Rückgabe 2 Werte Allgemeine Java-Themen 5
I Rückgabe eines Arrays aus einer Methode, wie sicher? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben