generischen Typ prüfen

B

budili

Gast
Hallo Leute,

ich wollte folgenden Code schreiben:

[Java]
public abstract class TestClient<T>
{
public final boolean isUsing(final List<Object> items)
{
for (final Object object : items)
{
if (object instanceof T)
{
doYourJob();
}
}
return false;
}
}
[/Java]

Leider funktioniert der o.g. Code nicht. Der Compiler meckert mir folgende Zeile an:
Code:
if (object instanceof T)
mit folgender Fehlermeldung: Cannot perform instanceof check against type parameter T. Use instead its erasure Object instead since further generic type information will be erased at runtime.

Der Compiler meckert wahrscheinlich, weil T zur Laufzeit alles sein kann und er es wohl nicht prüfen kann. Mir ist nur nicht ganz klar, wie ich das lösen könnte.

Gibt es überhaupt eine Möglichkeit zur Laufzeit den generischen Typ zu prüfen?
Hat jemand einen Tipp?

Gruß
Tim
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
T ist nur Luft, existiert nach dem Kompilieren nicht mehr, daher für instanceof nicht geeignet,
du könntest im Konstruktor verlangen, dass ein T-Objekt oder Class<T> übergeben wird, damit hättest du was (virtuell) handefestes, um Vergleiche anzustellen
 

Simon_Flagg

Bekanntes Mitglied
ich denke du hast recht, dass T iwas sein kann...
schick vlt. ein Objekt von T als Parameter mit, damit der Compiler weiß, dass der typ von t definiert ist....

lg


// Mist immer zu spät...
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Wenn du als Übergabewert nur T zulässt wird es zur Laufzeit überprüft:

Java:
	public final void doSomething(final T test) {
	}
 
S

SlaterB

Gast
ähh, eher nur zur Kompilierzeit, und auch dann nur wenn der Aufrufer so nett ist, das zu beachten ;)

Java:
List<String> list = new ArrayList<String>();
List list2 = list;
list2.add(Integer.valueOf(42)); // erlaubt zur Kompilierzeit und zur Laufzeit
String x = list.get(0); // erlaubt zur Kompilierzeit, ClassCastException zur Laufzeit
 

budi

Mitglied
Ich hab noch nicht ganz verstanden wie Ihr das meint, ich habe nun folgendes ausprobiert:

[Java]
public Test(final Class<T> test)
{
this.test = test;
}
[/Java]

Nun habe ich in test diesen Generic, aber wie vergleiche ich nun?
Mit
Code:
instanceof
funktioniert das doch nach wie vor nicht. Oder?
 
S

SlaterB

Gast
Java:
Class test = ..;
if (test.isInstance(x))
if (test.isAssignableFrom(x))
if (test == x.getClass())
schau in der API zu Class nach, was die entsprechenden Methoden leisten,
bzw. probiere sie aus,
bei nur gleichen Klassen kannst du direkt vergleichen, bei Vererbung wirds etwas spannender was alles erlaubt sein soll
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
C Klassen Problem mit Funktion einer Generischen Klasse die ein Interface implementiert Allgemeine Java-Themen 0
G Fehler beim instanzieren einer Generischen Klasse Allgemeine Java-Themen 5
M Collections Typ Variable einer generischen Collection ? Allgemeine Java-Themen 4
L Methoden methoden an generischen klassentyp anpassen Allgemeine Java-Themen 5
I Mehrfaches Implementieren eines generischen Interface Allgemeine Java-Themen 9
J String-Typ in einen generischen Typ T umwandeln Allgemeine Java-Themen 6
N Vergleich von generischen Typen Allgemeine Java-Themen 2
C Methodenzugriff eines generischen Objekts Allgemeine Java-Themen 3
S Überschriebene Methode eines generischen Typen aufrufen Allgemeine Java-Themen 4
B Sortieren mit generischen Datentypen Allgemeine Java-Themen 3
M nochmal was mit generischen Containern Allgemeine Java-Themen 4
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
S Innerer Type einer generischen Collection herausfinden? Allgemeine Java-Themen 13
J Casten ueber generischen Parameter? Allgemeine Java-Themen 5
G generische Klasse als Parameter einer generischen Klasse Allgemeine Java-Themen 5
J Suche Doku um generischen Code zu erstellen. Allgemeine Java-Themen 9
D Listen von Generischen Typen inkl. Vererbung Allgemeine Java-Themen 2
G genauen Typ einer generischen Klasse zur Laufzeit ermitteln Allgemeine Java-Themen 2
G Syntax-Fehler beim aufrufen von generischen Klassenmethoden Allgemeine Java-Themen 4
S Problem mit meiner generischen Klasse Allgemeine Java-Themen 5
D ObjectStream auf generischen Listentyp Allgemeine Java-Themen 4
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
W Classpath Reflexion - Prüfen ob man auf ein Feld ändern kann Allgemeine Java-Themen 2
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
J Mit Lombok Integer Range prüfen Allgemeine Java-Themen 6
S Prüfen ob Textfile existiert Allgemeine Java-Themen 9
E Programm auf Installation prüfen Allgemeine Java-Themen 1
S Binärbaum prüfen Allgemeine Java-Themen 0
L String auf zahlenwert prüfen Allgemeine Java-Themen 13
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
Z Java Exceptions - Auf leeres Feld prüfen Allgemeine Java-Themen 10
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
M .jar nach Datei prüfen Allgemeine Java-Themen 2
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
C Best Practice [Arrays] Wie sinnvoll prüfen, ob Array primitive Datentypen enthält? Allgemeine Java-Themen 6
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
Y Prüfen ob ein Graph immer einen von mehren Enden erreicht Allgemeine Java-Themen 4
O Prüfen ob String eine Zahl mit maximal 2 Nachkommastellen ist Allgemeine Java-Themen 4
M datei aufruf prüfen Allgemeine Java-Themen 9
D Best Practice Prüfen ob jar nachträglich geändert wurde Allgemeine Java-Themen 2
B Dateien prüfen auf Gleichheit Allgemeine Java-Themen 5
H String auf Zahlen prüfen Allgemeine Java-Themen 4
T auf Valides Datum prüfen Allgemeine Java-Themen 12
N Java Version Prüfen lassen Allgemeine Java-Themen 11
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
E selber Klassen kompilieren/ prüfen Allgemeine Java-Themen 5
O Variablen Originalname einer übergebenen Variable prüfen Allgemeine Java-Themen 9
T Methoden Zahlenpalindrom laufzeitoptimiert prüfen Allgemeine Java-Themen 4
U ResourceBundles auf vollständigkeit prüfen Allgemeine Java-Themen 2
C jollyday: prüfen, ob Datum = Feiertag Allgemeine Java-Themen 8
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
E Prüfen ob Fenster mit Namen offen ist Allgemeine Java-Themen 2
M Binärbaum auf vollständigkeit prüfen Allgemeine Java-Themen 4
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
N List auf null prüfen Allgemeine Java-Themen 2
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
N Prüfen ob Methode ausgeführt wird und diese ggf. abbrechen? Allgemeine Java-Themen 8
B Prüfen ob ein Programm gestartet wurde Allgemeine Java-Themen 23
N ArrayList nach Reihenfolge prüfen Allgemeine Java-Themen 2
C Prüfen auf Zahl und 6 stellig fehlerhaft? warum? Allgemeine Java-Themen 7
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
H Prüfen, ob doppete Werte in int-Array vorhanden sind Allgemeine Java-Themen 16
data89 Bilder mit Java prüfen - suche dringend Hilfe Allgemeine Java-Themen 8
S Prüfen auf Hex-Wert fester Länge! Allgemeine Java-Themen 5
M Prüfen, welche anderen Programme laufen Allgemeine Java-Themen 5
K Zip dateien prüfen Allgemeine Java-Themen 3
G ZIP Archiv auf Konsistenz prüfen Allgemeine Java-Themen 2
T Parameter einer Klasse auf Interface prüfen Allgemeine Java-Themen 6
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
P Sound Buffer prüfen Allgemeine Java-Themen 12
B PrintService - Wie prüfen ob Drucker online ist? Allgemeine Java-Themen 2
A Textfeld prüfen, ob ein Punkt eingegeben wurde Allgemeine Java-Themen 8
flashfactor Prüfen ob bereits eine Instanz gestartet ist Allgemeine Java-Themen 2
C Prüfen, ob eine Methode eine andere überschreibt! WIE? Allgemeine Java-Themen 8
T Prüfen, ob Char ein Quantifier ist Allgemeine Java-Themen 6
N Prüfen ob Objekt in Liste enthalten ist Allgemeine Java-Themen 17
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
J Mit Patternmatching einen Satz prüfen Allgemeine Java-Themen 12
G Prüfen ob Ziffern einer Zahl pandigital sind? Allgemeine Java-Themen 15
M Prüfen ob Variable vorhanden / initalisiert ist Allgemeine Java-Themen 4
J Wie prüfen ob eine Datei vom OS fertig geschrieben wurde? Allgemeine Java-Themen 6
TheJavaKid Zeile auf existenz von String prüfen. Allgemeine Java-Themen 19
A Weshalb man Parameter auf Gültigkeit prüfen sollte Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben