ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
2097
2097
EMPFEHLEN
-
Hallo miteinander,
hab da mal ein Problem. Ich habe eine Klasse, die Abhängig vom Typ des Generics einen Datentyp zurückliefert (wer häts gedacht). Ich hab jedoch das Problem, das die Generierung des Datentyps (aus einem XML File) abhängig vom Generic ist. Um aber ein Generic z.B. auf "instanceof" Abfragen zu können, muss die generic Variable mit einer Instanz des übergebenen Generics gesetzt sein. Wie kann ich das umgehen?
Kurz also, kann ich eine uninstanzierte Variable auf Typ abfragen?
So siehts momentan aus:
PHP-Code:MyClass<Number> myClass = new MyClass<Number>(1);
PHP-Code:public class MyClass<T>{
private T type;
public MyClass(T type){
this.type = type;
}
public T doingSomeMagic(){
if (this.type instanceof Number){
return wurschtelNumber();
}else if(this.type instanceof String){
return wurschtelString();
}
}
}
-
27.08.08 16:36 #2
Kurz, es geht nicht. (Lang: es geht unter gewissen Umständen doch, die sind allerdings sehr exotisch und in deinem Fall nicht praktikabel). falls du wissen willst warum, google mal nach Generics und Type Erasure.
Was du da vorhast sieht übrigens auf den ersten Blick nach schlechtem Design aus
. instanceof ist für diese Fälle foo. warum lässt du nicht einfach den Konstruktor ohe parameer und bietest die Methode someMagic mit mehreren Parametertypen an?
Gruß
OllieIn theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
Hi,
danke für deine Antwort. Das es nicht das nonplusultra ist ist mir klar. Drum poste ich hier ja
Ähnliche Probleme hatte ich schon öfters und ich dachte mit Generics kann ichs lösen.
Das funktioniert aber imho nur, wenn ich eine Instanz des generischen Typs an die Klasse/Funktion übergebe, was ich aber nicht will, da es eigentlich nichts zu übergeben gibt.
Das mit den Parametern in doingSomeMagic versteh ich nicht.
Was ist der Unterschied ob ich den Typ im Kontruktor übergebe oder in der Funktion?
-
27.08.08 18:16 #4In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
Danke, aber die Lösung is mir zu billig
-
Billig oder nicht, das ist jedenfalls der richtige Weg.

Generics braucht man eigentlich nur in seltenen Fällen, meistens kann man wesentlich elegantere und/oder einfachere Konstrukte verwenden.
-
28.08.08 09:57 #7
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.885
- Blog-Einträge
- 29
Hallo,
wie Olli schon sagte ist das in 99% der Fälle nicht notwendig kann aber bei generischem Frameworkcode auch mal nützlich sein.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
/** * */ package de.tutorials; import java.lang.reflect.ParameterizedType; /** * @author Thomas.Darimont * */ public class RuntimeGenericsDetection { /** * @param args */ public static void main(String[] args) { System.out.println(new TypeHolder<String>(){}.getType()); } static class TypeHolder<TType>{ Class<TType> type; @SuppressWarnings("unchecked") public TypeHolder(){ type = (Class<TType>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0]; } public Class<TType> getType() { return type; } } }
Ansonsten schau mal hier:
http://www.tutorials.de/forum/java/3...ermitteln.html
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
28.08.08 10:57 #8
Das ist, was ich mit der langen Version in meinem Ursprungspost meinte. Allerdings weiß ich nicht, wie sinnvoll es ist a) ein derart triviales Problem mit einem derart komplizierten Vorgehen zu erschlagen und b) dies einem Anfänger vorzuschlagen. Sowas führt im allgemeinen nur dazu, dass solche Vorschläge per Copy & Paste übernommen werden und kein Gedanhke bzgl. der Sinnhaftigkeit verschwendet wird.
Es muss immer so einfach wie möglich gehen, aber kein bisschen einfacher
.
REINHAUN!In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
Ähnliche Themen
-
Generic SAX Parser Problem
Von Markus Taubek im Forum XML TechnologienAntworten: 0Letzter Beitrag: 18.11.10, 14:35 -
Testfrage bzgl. generic methods / Typparameter
Von Steve222 im Forum Java GrundlagenAntworten: 4Letzter Beitrag: 08.09.10, 22:33 -
TROJ Generic.ADV - Was tun?
Von aquila im Forum Security (Viren, Trojaner, Spam)Antworten: 3Letzter Beitrag: 07.09.08, 18:14 -
[VC++.NET] Arbeiten mit Generic::List / Array
Von the incredible Leitman im Forum .NET DatenverwaltungAntworten: 19Letzter Beitrag: 27.12.06, 10:13 -
Listener, Standart AWT - PropertyChange - Generic?
Von flashray im Forum JavaAntworten: 0Letzter Beitrag: 29.03.06, 01:19





Zitieren

Login





