salut
dans une boucle, j'ai ce code
Code:
1
2
3 Object obj = vec.elementAt(i); Vector<Object> v = (Vector<Object>) obj;
j'obtiens ce warning
une idéeCode:
1
2
3required: java.util.Vector<java.lang.Object> Vector<Object> v = (Vector<Object>) obj;
Version imprimable
salut
dans une boucle, j'ai ce code
Code:
1
2
3 Object obj = vec.elementAt(i); Vector<Object> v = (Vector<Object>) obj;
j'obtiens ce warning
une idéeCode:
1
2
3required: java.util.Vector<java.lang.Object> Vector<Object> v = (Vector<Object>) obj;
Bonjour,
Une chose : A utiliser les avantages de Java5, pourquoi ne pas utiliser les avantages de Java2 (les List à la place des Vectors) ?
Bonjour,
ça ne serait pas plutôt :
Citation:
Type safety: Unchecked cast from Object to Vector<Object>
+1 pour utiliser List au lieu de Vector.
Comment est ce que tu déclares vec ?
Comment est déclaré vec?
ouCode:Vector vec = new Vector();
Code:Vector<Vector<Object>> vec = new Vector<Vector<Object>>();
Salut,
Les casts vers un type paramétré génère toujours ce type de warning, tout simplement parce que un cast n'est pas typesafe contrairement à l'objectif des Generics.
Bref le warning te signale un danger potentiel. A toi de voir si tu peux l'ignorer (et éventuellement utiliser @SuppressWarning) mais attention en cas d'erreur cela peut provoquer des exceptions bizarres plus loin dans ton code...
a++
Suffit de déclarer vec comme la 2ième proposition de fnobb, et de ne plus passer par la variable Obj.
Serait-il possible d'avoir un peut-plus de code ?
Code:
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 public void selectWhere(Query query){ Vector<Object> eltsWhere = query.getChampsWhere(); Vector<Object> vec = new Vector<Object>(); vec.addAll(eltsWhere); createWherePart(vec); } public boolean createWherePart(Vector<Object> vec){ String op = (String) vec.elementAt(0); boolean ok=true; int i = 1; while (i < lg) { Object obj = vec.elementAt(i); String cname = obj.getClass().getName(); if (cname.equalsIgnoreCase("java.util.Vector")) { Vector<Object> v = (Vector<Object>) obj; boolean b = createWherePart(v); i++ }else{ String value = (String) vec.elementAt(i + 2); i=i+3; } return ok; }
Heu... je me répète mais on ne peut pas caster d'un type non-Generic vers un type Generic sans que cela ne génère un warning !
a++
Ton vecteur est bizarre car si j'ai bien compris,
l'élément 0 est un String
et les autres élements sont des VectorsCode:String op = (String) vec.elementAt(0);
Je voie mal comment éviter les warning sans ajouter "@SuppressWarnings("unchecked")" au dessus de la méthode createWherePartCode:
1
2
3
4
5 Object obj = vec.elementAt(i); ... Vector<Object> v = (Vector<Object>) obj; ou des String String value = (String) vec.elementAt(i + 2);