problème de type [java 1.5] - Java - Programmation
Marsh Posté le 04-01-2005 à 23:29:26
ben c'est clair ...
keySet prend en paramètre un objet de type générique K et toi tu lui balance un Set de ce type ...
tu l'appelles pas avec le bon paramètre quoi ...
Marsh Posté le 05-01-2005 à 18:11:00
Pourtant je précise que le type K est :
|
dans le prototype de la fonction grapheIdeaux
donc si je lui file un type Set comme K lors de l'appel a keySet, le type K defini dans le prototype est toujours respecté pourtant non
Peux-tu me proposer une reponse pour ce problème ?, comment corriger cette ligne qui merde ?
Marsh Posté le 05-01-2005 à 18:17:37
benou a écrit : ben c'est clair ... |
euh, "clair", faut pas exagerer
Marsh Posté le 05-01-2005 à 18:20:29
ouais en fait t'as raison
tin e que c'est chaint à lire quand c'est plein de générique comme ca
Marsh Posté le 05-01-2005 à 18:21:25
the real moins moins a écrit : euh, "clair", faut pas exagerer |
surtout que je me suis chié dessus
Marsh Posté le 05-01-2005 à 18:47:10
bon, déjà le pb, c'est que ta fonction retourne un Set<K> que tu essaie d'affecter à un Iterator<U> (U valant "? extends Set<T>", j'ai simplifié). Autant que je sache Iterator n'hérite pas de Set
Ça règle pas le problème, mais ça me turlupine ...
Marsh Posté le 05-01-2005 à 18:55:12
bobuse a écrit : bon, déjà le pb, c'est que ta fonction retourne un Set<K> que tu essaie d'affecter à un Iterator<U> (U valant "? extends Set<T>", j'ai simplifié). Autant que je sache Iterator n'hérite pas de Set |
surtout que y a pas de problème : regarde bien : il fait un .iterator() sur la valeur retournée par keySet ...
Marsh Posté le 05-01-2005 à 18:56:24
benou a écrit : surtout que y a pas de problème : regarde bien : il fait un .iterator() sur la valeur retournée par keySet ... |
Mince, j'avais pas vu ça
Marsh Posté le 05-01-2005 à 19:01:40
n'empêche que si !
edit : non en fait
Marsh Posté le 05-01-2005 à 19:26:07
compris !!!! \o/
en fait, là ton g c'est un DirectedGraphMap la clef est d'un type qui étend Set<K>. exemple : DirectedGraphMap<ArrayList<T>,V>.
Donc tu ne peux pas t'en servir comme d'un Set<K> parce que l'objet passé peut être d'un type plus spécifique que Set<K>.
exemple : si la ligne
Set<T> node = topoIt.next(); |
te retourne une truc du type LinkedList<T>, tu ne pourras pas le passer en argument à keySet qui attend un argument de type ArrayList<T>.
tin, qu'est ce que c'est tordu
Marsh Posté le 05-01-2005 à 19:37:57
exercice n°2 : maintenant faut trouver la bonne signature de méthode pour que ca passe
Marsh Posté le 05-01-2005 à 19:40:35
ouaip, j'en suis arrivé à la même conclusion en copiant le code sous eclipse.
D'ailleurs, j'aimerai bien voir le prototype de topologicSort
Marsh Posté le 05-01-2005 à 19:42:37
benou a écrit : exercice n°2 : maintenant faut trouver la bonne signature de méthode pour que ca passe |
Ben en changeant
grapheIdeaux(DirectedGraphMap<? extends Set<T>,V> g) |
en
grapheIdeaux(DirectedGraphMap<Set<T>,V> g) |
ça devrait le faire ... à voir en fonction des autres contraintes que je ne peux pas deviner, mais j'imagine que ce ? extends Set<T> n'est pas là par hasard
Marsh Posté le 05-01-2005 à 19:43:50
je m'y tente
Code :
|
edit : y a peut être moyen de faire que le type de retour soit DirectedGraphMap<B,B>, mais je peux pas savoir sans connaître le reste du corp de la méthode ...
Marsh Posté le 05-01-2005 à 19:45:26
bobuse a écrit : Ben en changeant
|
trop restrictif : tu n'acceptes plus que les Set<T> et pas les ArrayList<T> par exemple
Marsh Posté le 05-01-2005 à 19:46:23
bobuse a écrit : ouaip, j'en suis arrivé à la même conclusion en copiant le code sous eclipse. |
moi je le fais quand même sans avoir jamais installé un jdk1.5 : tout dans la tête !!!
Marsh Posté le 05-01-2005 à 19:53:08
j'ai plus de navets, ça te va des patates
chez moi ça passe
Marsh Posté le 05-01-2005 à 19:56:09
bobuse a écrit : |
va quand même falloir que je me le teste ce Tiger
en tout cas, la doc sur les generics dont t'as filé le lien est top !
Marsh Posté le 05-01-2005 à 19:58:23
ReplyMarsh Posté le 05-01-2005 à 19:59:44
juste une question comme ça en passant : ça existe la spécialisation des templates en Java 1.5 ?
Marsh Posté le 05-01-2005 à 20:01:26
the real moins moins a écrit : euh où la doc? |
t'as effacé ton post bobuse
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Marsh Posté le 05-01-2005 à 20:01:47
ReplyMarsh Posté le 05-01-2005 à 20:01:55
the real moins moins a écrit : euh où la doc? |
oups, c'était dans un message que j'ai délété
je répondrai bien : http://www.google.fr/search?q=java+generics
mais je vais vous économiser un clic : http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
A noter aussi le cours sur développez.com : http://lroux.developpez.com/articl [...] age=page_5
Marsh Posté le 05-01-2005 à 20:03:04
bobuse a écrit : |
ben oui, mais benou parlait d'un bon doc, donc je demandais lequel
Marsh Posté le 05-01-2005 à 20:04:03
Harkonnen a écrit : juste une question comme ça en passant : ça existe la spécialisation des templates en Java 1.5 ? |
c'est-à-dire
Marsh Posté le 05-01-2005 à 20:04:17
Harkonnen a écrit : juste une question comme ça en passant : ça existe la spécialisation des templates en Java 1.5 ? |
squoi la spécialisation de template ?
Marsh Posté le 05-01-2005 à 20:06:38
bobuse a écrit : c'est-à-dire |
un template spécialisé pour certains types
au lieu d'avoir un template pour tous les types, j'aimerais pouvoir dire que mon template n'est valable que pour certains types, pas pour tous
Marsh Posté le 05-01-2005 à 20:07:44
nraynaud a écrit : harko > non, ça fonctionne par erasure qu'on te dit |
dommage, mais merci quand même
Marsh Posté le 05-01-2005 à 20:07:55
bobuse, benou > mettre un code différent du code générique pour certaines valeurs du paramètre générique :
(style optimiser le calcul d'un truc pour les ints par ex.)
Marsh Posté le 05-01-2005 à 20:08:31
Harkonnen a écrit : un template spécialisé pour certains types |
Ben un truc du genre alors :
Code :
|
Marsh Posté le 05-01-2005 à 20:09:14
nraynaud a écrit : |
c'est exactement pour ça que j'aurais voulu que ça existe
Marsh Posté le 05-01-2005 à 20:09:23
Harkonnen a écrit : un template spécialisé pour certains types |
bha oui :
Code :
|
et pouf, t'as une classe TonGeneric dont tu ne peux te servir qu'avec des nombres (Integer, BigInteger, Long, etc ...)
Marsh Posté le 05-01-2005 à 20:09:28
nraynaud a écrit : bobuse, benou > mettre un code différent du code générique pour certaines valeurs du paramètre générique : |
ben suffit d'écrire plusieurs templates alors, non ?
Bon sur ce, je me rentre
Marsh Posté le 05-01-2005 à 20:11:45
bobuse a écrit : ben suffit d'écrire plusieurs fonctions alors, non ? |
ouais, ca devrait marcher je pense ...
Marsh Posté le 05-01-2005 à 20:14:08
genre :
Code :
|
nan ?
ca compile ca ?
Marsh Posté le 05-01-2005 à 20:23:35
idea est pas content en tous cas: "wildcards may only be used as reference parameters"
Marsh Posté le 05-01-2005 à 20:24:44
the real moins moins a écrit : idea est pas content en tous cas: "wildcards may only be used as reference parameters" |
j'ai édité ...
Marsh Posté le 04-01-2005 à 20:04:34
Bonjour, mon fichier GraphMapUtil ne compile pas .
C'est une classe qui ne contient que des fonction statiques
Voici le contenu de la fonction dans laquelle ça plante :
Voici le prototype de la fonction keySet() dans DirectedGraphMap :
message d'erreur :
/Net/mahonet/Utilisateurs/ffournel/m1/java/Graph/src/graph/GraphMapUtil.java:788: cannot find symbol
symbol : method keySet(java.util.Set<T>,boolean)
location: interface graph.DirectedGraphMap<capture of ? extends java.util.Set<T>,V>
Iterator<? extends Set<T>> pred = g.keySet(node, false).iterator();
Help