Beliebig viele Typen bei Generics

Status
Nicht offen für weitere Antworten.

Marco13

Top Contributor
Hi

Ich bräuchte eine Möglichkeit, einer Klasse beliebig viele Typen mitzugeben. Die sollten leicht erweiterbar sein, aber (trotzdem) zur Compilezeit überprüft werden können. Sinngemäß also sowas wie
Code:
class Foo<Type1, Type2 ... TypeN>
{
    Type1 getType1() { ... }
    Type2 getType2() { ... }
    ...
    TypeN getTypeN() { ... }
}
Eben mal mit einem Type, oder mal mit 5 Typen...


In meiner schier unendlichen Kreativität (sprich: Verzweiflung :? ) bin ich da bisher nur auf sowas gekommen wie
Code:
// This actually works, but ... well...
interface TypeSequence<Type, TypeSequenceType extends TypeSequence>
{
    Type getType();
    TypeSequenceType getSubTypes();
}

class TypeSequence1 implements TypeSequence<String, TypeSequence<Integer, TypeSequence<Boolean, TypeSequence>>>
{
    public String getType() { return "foo"; }
    public TypeSequence<Integer, TypeSequence<Boolean, TypeSequence>> getSubTypes() { return new TypeSequence2(); }
}

class TypeSequence2 implements TypeSequence<Integer, TypeSequence<Boolean, TypeSequence>>
{
    public Integer getType() { return new Integer(123); }
    public TypeSequence<Boolean, TypeSequence> getSubTypes() { return new TypeSequence3(); }
}

class TypeSequence3 implements TypeSequence<Boolean, TypeSequence>
{
    public Boolean getType() { return new Boolean(true); }
    public TypeSequence<Type, TypeSequence> getSubTypes() { return null; }
}
Rekursiv getypte Generics :cool: Yo. Das funktioniert zwar, aber ... :roll: ja.... Hab ich gerade ein Brett vorm Kopf, oder ist das wirklich nicht so einfach? Hat jemand eine Idee dazu?

bye
 
T

tuxedo

Gast
Vielleicht ist das deshalb nicht so einfach, weil es nach einem "von hinten durch den Brustkorb mit dem Finger ins Auge"-Programmierstil aussieht und man sowas einfach anders lösen sollte??

- Alex
 

Evil-Devil

Top Contributor
Warum sollte man sowas haben wollen? Das einzige was Generics vermissen lassen sind die Primären Datentypen als Typ anzugeben.
 

Marco13

Top Contributor
Gerne. Wie?

Die Anforderung ist (nochmal genauer) : Ich habe eine Klasse, die der Verwaltung von verschiedenen Objekten dienen soll. Die Typen der Objekte und die Anzahl der Objekte ist mir nicht bekannt. Trotzdem soll das ganze typsicher sein. Es soll also jemand eine Implementierung dieser Klasse erstellen können, die z.B. so aussieht
Code:
class MyContainer implements Container<String>
{
    String getElement(...) { ... }
}
Jemand anderes soll eine implementierung erstellen können, die so aussieht
Code:
class MyOtherContainer implements Container<Float, Integer, Boolean>
{
    Float getElement(...) { ... }
    Integer getElement(...) { ... }
    Boolean getElement(...) { ... }
}
(dass die Methoden "eigentlich" unerschiedlich heißen müßten, ist klar...)

Es GIBT einfach keine Möglichkeit, mehrere Typparameter anzugeben (abgesehen von dieser mega-tricky rekursiven Variante). Aber vielleicht hat ja jemand eine Idee, wie man dem gewünschten Verhalten so nahe wie möglich kommt. Wenn nicht, muss ich halt mal sehen, ob man irgendwas mit einer Map<Class, ElementType> oder so machen kann, aber um irgendwelche "brutalen" casts (und damit den Bruch der Anforderung, Compilezeit-Typsicherheit zu haben) käme man mit keiner Alternativlösung, die ich mir jetzt vorstellen könnte, herum... :?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Beliebig viele Worte Allgemeine Java-Themen 5
S Aufruf in Konsole mit beliebig vielen Argumenten? Allgemeine Java-Themen 18
thE_29 Komponente beliebig in einer JTextArea platzieren Allgemeine Java-Themen 3
A Best Practice Wie viele Referenzen machen Sinn? Weniger ist mehr? Allgemeine Java-Themen 1
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
T Multithreading: Wie viele Threads sollte ich erstellen? Allgemeine Java-Themen 12
Tacofan Hangman so viele Labels wie Buchstaben Allgemeine Java-Themen 5
K Variablen Konstruktor, unendlich viele Allgemeine Java-Themen 3
G Methoden Unterschiedliche viele Parameter Allgemeine Java-Themen 17
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
H Sehr viele Threads effizient Verwalten Allgemeine Java-Themen 13
R Arrayausgabe enthält viele Leerzeichen Allgemeine Java-Themen 4
M Threads Viele Aufrufe aus Thread, komisches Verhalten Allgemeine Java-Themen 8
C Threads Verbraucht eine Zeitabfrage viele Rechen-Ressourcen? Allgemeine Java-Themen 8
J BlueJ Methode hat zu viele Parameter Allgemeine Java-Themen 6
D (Viele) Daten performant speichern und lesen Allgemeine Java-Themen 5
S Viele zip-files zu einem kombinieren..? Allgemeine Java-Themen 3
KrokoDiehl Viele JARs und deren Resourcen Allgemeine Java-Themen 9
S Zu viele Felder. Allgemeine Java-Themen 4
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
H GUI: RectangleDrawer - zu viele Elemente im Vector für die paint-Methode Allgemeine Java-Themen 6
R Moeglichst viele Datumsstrings in Date Objekte konvertieren? Allgemeine Java-Themen 3
O viele Datensätze aus Datenbank - Java Heap Space - Excepion Allgemeine Java-Themen 25
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
T viele Threads Allgemeine Java-Themen 14
T Designfrage: Viele, kleine Objekte Allgemeine Java-Themen 13
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
E Viele if Abfragen auf viele Strings --> Alternative zu if Allgemeine Java-Themen 8
J Viele Fragen. =) Hoffentlich könnt ihr helfen Allgemeine Java-Themen 9
V 1 Methode für viele verschiedene Klassen? Allgemeine Java-Themen 9
S Viele Fragen eines Umsteigers (von .NET) Allgemeine Java-Themen 6
K Zu viele Threads -> langsamer angehen. Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2
T Fremde Typen mockt man nicht? Allgemeine Java-Themen 3
M Generics / Typen Allgemeine Java-Themen 1
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
C Generic-Funktion nur bei bestimmten Typen erlauben Allgemeine Java-Themen 6
T Interface mit generische Typen Allgemeine Java-Themen 5
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
F Grundrechenarten mit eigenen Typen Allgemeine Java-Themen 9
N Vergleich von generischen Typen Allgemeine Java-Themen 2
S Überschriebene Methode eines generischen Typen aufrufen Allgemeine Java-Themen 4
K Arrays.asList und primitive Typen Allgemeine Java-Themen 2
H2SO3- problem mit objecten verschiener Typen (E, <E> und T) Allgemeine Java-Themen 2
B hashtable für unterschiedliche Typen - mit Generics Allgemeine Java-Themen 8
S Generische Typen: Frage dazu Allgemeine Java-Themen 11
T DataFrame (Matrix mit mit verschiedenen Typen pro Spalte) Allgemeine Java-Themen 4
H2SO3- merken versch. Date Typen + erlaubte und unerlaubte kombinat Allgemeine Java-Themen 4
V Variable vom Typ String zum Typen "Message" konve Allgemeine Java-Themen 2
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
Q Typen von Generics & Casten Allgemeine Java-Themen 3
D Listen von Generischen Typen inkl. Vererbung Allgemeine Java-Themen 2
lumo Typen MSSQL + JAVA Allgemeine Java-Themen 4
B Generische Typen instanzieren Allgemeine Java-Themen 11
G Methoden auf Arrays aller primitiver Typen zusammenfassen? Allgemeine Java-Themen 8
C Dynamisch Objekte unterschiedlicher Typen erzeugen Allgemeine Java-Themen 6
S Variablennamen von primitiven Typen eines Konstruktors lesen Allgemeine Java-Themen 7
J parsen von verschiedenen dokument typen Allgemeine Java-Themen 3
S generics primitiver typen Allgemeine Java-Themen 5
D generischer Iterator mit verschiedenen Typen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben