Hallo,
Ich habe vor ein Objekt als Container für verschiedene Daten einzusetzen. Die Daten sind alle in JSON Objekten verpackt, der Inhalt dieser wird zur einfacheren Verarbeitung von einem Objekt einer Unterklasse von der Klasse DataType bestimmt. Gekürzt sieht das so in etwa aus vom Aufbau:
Soweit funktioniert das ganze, ich kann mit sowas wie DataType.Typ1.Untertyp_1 auf den entsprechenden Typ zugreifen.
Jetzt habe ich einen Container in den ich JSON Objekte sortiert nach DataTypes einsetzen und auslesen kann (DataType wird vereinfacht als Key benutzt). In etwa so
Ich hoffe ich das ich nun halbwegs gut erkläre was ich von hier aus vor habe.
Die set() und get() Funktion soll überprüfen ob der Datentyp einem bestimmtem Datentypen gleicht, also sowas wie >datatype == DataType.Typ1.Untertyp_X<
Jetzt würde ich ganz gern die selbe Klasse des Containers zum speichern von verschiedenen Unterklassen der Datentypen benutzen. Somit muss ich also irgendwie, wenn z.Bsp der Container Daten vom Typ der Unterklasse DataType.Typ2 beinhalten soll an den Stellen wo der Vergleich der Datentypen kommt nicht mehr DataType.Typ1.Untertyp_X sondern DataType.Typ2.Untertyp_X abgefragt werden (Kennzeichnung des statischen Objekts bleibt gleich, Unterklasse ändert sich) abfragen. Nur wie.
Meine Ideen dazu wären irgendwie an den Konstruktor Unterklassen von DataType weiter zu geben und dann zu kucken wie ich von dort wieder an das statische Objekt kommt; Oder irgendwie die Unterklassen als als generische Typen (nennen wir ihn G) an die Klasse zu übergeben und dann von denen das Objekt raus zu ziehen.
Letzteres scheint mir vielversprechender, leider bekomme ich das ganze nicht umgesetzt.
Nehme ich G als Erweiterung von DataType (G extends DataType) kann ich zwar über G.Typ2.Untertyp_X auf den entsprechenden Datentypen zugreifen (was ja irgendwie unsinnig ist; G als DataType), aber leider ist G nicht allgemein für den Typen der Unterklasse nutzbar (G als DataType.TypX). Vermutlich ist mein Aufbau der DataType Klasse nicht passend, nur was müsste ich ändern?
Hilfe dazu würde mich sehr freuen
Ich habe vor ein Objekt als Container für verschiedene Daten einzusetzen. Die Daten sind alle in JSON Objekten verpackt, der Inhalt dieser wird zur einfacheren Verarbeitung von einem Objekt einer Unterklasse von der Klasse DataType bestimmt. Gekürzt sieht das so in etwa aus vom Aufbau:
Code:
class DataType
// einige Variablen, Funktionen, ein privater Konstruktor
class Typ1 extends DataType
// super() über den Konstruktor
static Typ1 Untertyp_1
static Typ1 Untertyp_2
class Typ2 extends DataType
// super() über den Konstruktor
static Typ2 Untertyp_1
static Typ2 Untertyp_2
Soweit funktioniert das ganze, ich kann mit sowas wie DataType.Typ1.Untertyp_1 auf den entsprechenden Typ zugreifen.
Jetzt habe ich einen Container in den ich JSON Objekte sortiert nach DataTypes einsetzen und auslesen kann (DataType wird vereinfacht als Key benutzt). In etwa so
Code:
class Container
JSONObject data
JSONObject get(DataType)
void set(Datatype, JSONObject)
Ich hoffe ich das ich nun halbwegs gut erkläre was ich von hier aus vor habe.
Die set() und get() Funktion soll überprüfen ob der Datentyp einem bestimmtem Datentypen gleicht, also sowas wie >datatype == DataType.Typ1.Untertyp_X<
Jetzt würde ich ganz gern die selbe Klasse des Containers zum speichern von verschiedenen Unterklassen der Datentypen benutzen. Somit muss ich also irgendwie, wenn z.Bsp der Container Daten vom Typ der Unterklasse DataType.Typ2 beinhalten soll an den Stellen wo der Vergleich der Datentypen kommt nicht mehr DataType.Typ1.Untertyp_X sondern DataType.Typ2.Untertyp_X abgefragt werden (Kennzeichnung des statischen Objekts bleibt gleich, Unterklasse ändert sich) abfragen. Nur wie.
Meine Ideen dazu wären irgendwie an den Konstruktor Unterklassen von DataType weiter zu geben und dann zu kucken wie ich von dort wieder an das statische Objekt kommt; Oder irgendwie die Unterklassen als als generische Typen (nennen wir ihn G) an die Klasse zu übergeben und dann von denen das Objekt raus zu ziehen.
Letzteres scheint mir vielversprechender, leider bekomme ich das ganze nicht umgesetzt.
Nehme ich G als Erweiterung von DataType (G extends DataType) kann ich zwar über G.Typ2.Untertyp_X auf den entsprechenden Datentypen zugreifen (was ja irgendwie unsinnig ist; G als DataType), aber leider ist G nicht allgemein für den Typen der Unterklasse nutzbar (G als DataType.TypX). Vermutlich ist mein Aufbau der DataType Klasse nicht passend, nur was müsste ich ändern?
Hilfe dazu würde mich sehr freuen