Hab mich gestern mit nem Kollegen unterhalten...und zwar gehts um das folgende:
Eine Methode generiert zu einem Parameter bestimmten Typs einen anderen Typ, der verschieden sein kann. Die zurückgegebenen Objekttypen haben keinen gemeinsamen Nenner, also kein gemeinsames Interface.
Momentan mach ichs so, dass ich auf der aufgerufenen Seite Object zurückgebe und auf der aufrufenden Seite dieses mittels .getClass() == Antwort.class zurückparse, aber das ist irgendwie so statisch...schwer erweiterbar und ich muss den Typ innerhalb der if-Struktur anlegen (weil ich erst da drin entscheiden kann...).
Gibts dafür ne bessere Lösung? Die verwendete Programmiersprache ist Java; in C++ geht sowas sicher mit Templates
Pattern gesucht
Pattern gesucht
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- finupsen
- Beiträge: 1327
- Registriert: 21.04.2004 20:07:05
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: Pattern gesucht
moin,
also kann sein das ich das komplett falsch verstanden habe. Wenn ja, einfach ignorieren
wenn ich ein "object" habe dessen typ ich momentan nicht kenne (oder nicht kennen kann)
benutze ich "instanceof".
beispiel:
also kann sein das ich das komplett falsch verstanden habe. Wenn ja, einfach ignorieren
wenn ich ein "object" habe dessen typ ich momentan nicht kenne (oder nicht kennen kann)
benutze ich "instanceof".
beispiel:
Code: Alles auswählen
String str;
Integer itr;
if (obj instanceof String) {
str=(String)obj;
} else if (obj instanceof Integer) {
itr=(Integer)obj;
} else ...
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.
... und Wasser ist naß.
Re: Pattern gesucht
Na gut, so gehts auch, aber eigentlich machst du nichts anderes als ich mit
Die Frage ist ja, kann man das verallgemeinern, sodass ich aus dem if rauskomm?
Wünschenswert:
wobei EinAnderesObjekt eben von der Antwort stammt, deren genauen Rückgabetyp ich nicht kenne.
Code: Alles auswählen
if (lResponse.getClass() == PossibleResponseType.class)
{...}
else if (...)
{...}
Wünschenswert:
Code: Alles auswählen
??? = gibmirwas(MeinObjekt)
....
return EinAnderesObjekt;
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- finupsen
- Beiträge: 1327
- Registriert: 21.04.2004 20:07:05
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: Pattern gesucht
naja, es ist schon ein unterschied, ob ich == oder "instanceof" mache. Dürfte klar sein.
Bezogen auf dein beispiel ist es vergleichbar.
> Die Frage ist ja, kann man das verallgemeinern, sodass ich aus dem if rauskomm?
Ja, mit interfaces. Sie habe ja etwas gemeinsames. L.t. deinem beispiel sind es response-objekte.
Eine andere möglichkeit ausser "interface" bzw. von einer abstract-class abzuleiten sehe ich da nicht.
Bezogen auf dein beispiel ist es vergleichbar.
> Die Frage ist ja, kann man das verallgemeinern, sodass ich aus dem if rauskomm?
Ja, mit interfaces. Sie habe ja etwas gemeinsames. L.t. deinem beispiel sind es response-objekte.
Eine andere möglichkeit ausser "interface" bzw. von einer abstract-class abzuleiten sehe ich da nicht.
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.
... und Wasser ist naß.
Re: Pattern gesucht
Na gut, da es per Vorgabe keine Oberklasse dieser Objekte und kein Interface gibt, muss ich wohl damit zurechtkommen, die einzeln zurechtzupflücken.
Ich kann die API von dem System halt nicht verändern, sonst gäbe es dieses Interface schon lange
Ich kann die API von dem System halt nicht verändern, sonst gäbe es dieses Interface schon lange
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht