Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2757 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java 1.5] problème de type

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

[java 1.5] problème de type

n°937205
Giz
Posté le 04-01-2005 à 20:04:34  profilanswer
 

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 :

Code :
  1. static<T,V> DirectedGraphMap<Set<T>,Set<T>>
  2.     grapheIdeaux(DirectedGraphMap<? extends Set<T>,V> g) {
  3.             //OK
  4.             ArrayList<? extends Set<T>> topoSort;
  5.             //OK
  6.             topoSort = topologicSort(g);
  7.             //OK
  8.             Iterator<? extends Set<T>> topoIt = topoSort.iterator();
  9.             //OK
  10.     while(topoIt.hasNext()) {
  11.                 //OK
  12.         Set<T> node = topoIt.next();
  13.                 //ci-dessous ça merde :cry:
  14.         Iterator<? extends Set<T>> pred = g.keySet(node, false).iterator();
  15.                 ...
  16.             }
  17. }


 
Voici le prototype de la fonction keySet() dans DirectedGraphMap :

Code :
  1. public interface DirectedGraphMap<K,V> extends GraphMap<K,V> {
  2.      Set<K> keySet(K key, boolean isLeftKey);
  3.      ...
  4. }


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 :cry:

mood
Publicité
Posté le 04-01-2005 à 20:04:34  profilanswer
 

n°937389
benou
Posté le 04-01-2005 à 23:29:26  profilanswer
 

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 ...


Message édité par benou le 04-01-2005 à 23:30:00

---------------
ma vie, mon oeuvre - HomePlayer
n°938254
Giz
Posté le 05-01-2005 à 18:11:00  profilanswer
 

Pourtant je précise que le type K est :


? extends Set<T>


 
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 ?

n°938263
the real m​oins moins
Posté le 05-01-2005 à 18:17:37  profilanswer
 

benou a écrit :

ben c'est clair ...


euh, "clair", faut pas exagerer [:icon15]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°938269
benou
Posté le 05-01-2005 à 18:20:29  profilanswer
 

ouais en fait t'as raison :/
 
tin e que c'est chaint à lire quand c'est plein de générique comme ca :(


---------------
ma vie, mon oeuvre - HomePlayer
n°938272
benou
Posté le 05-01-2005 à 18:21:25  profilanswer
 

the real moins moins a écrit :

euh, "clair", faut pas exagerer [:icon15]


surtout que je me suis chié dessus  :sweat:  
[:neowen]


---------------
ma vie, mon oeuvre - HomePlayer
n°938321
bobuse
Posté le 05-01-2005 à 18:47:10  profilanswer
 

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 ...


Message édité par bobuse le 05-01-2005 à 18:48:53
n°938328
benou
Posté le 05-01-2005 à 18:55:12  profilanswer
 

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 ...


Message édité par benou le 05-01-2005 à 18:58:24

---------------
ma vie, mon oeuvre - HomePlayer
n°938329
bobuse
Posté le 05-01-2005 à 18:55:33  profilanswer
 

Je pars peut-être en fumette, mais j'aurai essayé :D

n°938330
bobuse
Posté le 05-01-2005 à 18:56:24  profilanswer
 

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 :D

mood
Publicité
Posté le 05-01-2005 à 18:56:24  profilanswer
 

n°938332
bobuse
Posté le 05-01-2005 à 19:01:40  profilanswer
 

n'empêche que si !
 
edit : non en fait :whistle:


Message édité par bobuse le 05-01-2005 à 19:54:42
n°938355
benou
Posté le 05-01-2005 à 19:26:07  profilanswer
 

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 [:w3c compliant]


Message édité par benou le 05-01-2005 à 19:33:43

---------------
ma vie, mon oeuvre - HomePlayer
n°938377
benou
Posté le 05-01-2005 à 19:37:57  profilanswer
 

exercice n°2 : maintenant faut trouver la bonne signature de méthode pour que ca passe [:ddr555]


---------------
ma vie, mon oeuvre - HomePlayer
n°938383
bobuse
Posté le 05-01-2005 à 19:40:35  profilanswer
 

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 :)

n°938384
bobuse
Posté le 05-01-2005 à 19:42:37  profilanswer
 

benou a écrit :

exercice n°2 : maintenant faut trouver la bonne signature de méthode pour que ca passe [:ddr555]


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 :/

n°938390
benou
Posté le 05-01-2005 à 19:43:50  profilanswer
 

je m'y tente [:ddr555]
 

Code :
  1. static<T,V,B extends Set<T>> DirectedGraphMap<Set<T>,Set<T>>
  2.         grapheIdeaux(DirectedGraphMap<B,V> g) {
  3.             //OK  
  4.             ArrayList<B> topoSort;
  5.             //OK  
  6.             topoSort = topologicSort(g);
  7.             //OK  
  8.             Iterator<B> topoIt = topoSort.iterator();
  9.             //OK  
  10.         while(topoIt.hasNext()) {
  11.                 //OK  
  12.             B node = topoIt.next();
  13.                 // je mise 3 navets que ca passe
  14.             Iterator<B> pred = g.keySet(node, false).iterator();
  15.                 ...
  16.             }
  17. }


 
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 ...


Message édité par benou le 05-01-2005 à 19:48:24

---------------
ma vie, mon oeuvre - HomePlayer
n°938392
benou
Posté le 05-01-2005 à 19:45:26  profilanswer
 

bobuse a écrit :

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


trop restrictif : tu n'acceptes plus que les Set<T> et pas les ArrayList<T> par exemple :/


---------------
ma vie, mon oeuvre - HomePlayer
n°938395
benou
Posté le 05-01-2005 à 19:46:23  profilanswer
 

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 !!! :D


---------------
ma vie, mon oeuvre - HomePlayer
n°938406
bobuse
Posté le 05-01-2005 à 19:53:08  profilanswer
 

j'ai plus de navets, ça te va des patates :D
 
chez moi ça passe :)

n°938411
benou
Posté le 05-01-2005 à 19:56:09  profilanswer
 

bobuse a écrit :


chez moi ça passe :)


[:youpi] [:youpi] [:youpi] [:youpi]
 
 
va quand même falloir que je me le teste ce Tiger :sweat:  
en tout cas, la doc sur les generics dont t'as filé le lien est top ! :jap:


---------------
ma vie, mon oeuvre - HomePlayer
n°938416
the real m​oins moins
Posté le 05-01-2005 à 19:58:23  profilanswer
 

euh où la doc? [:cupra]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°938417
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-01-2005 à 19:59:44  profilanswer
 

juste une question comme ça en passant : ça existe la spécialisation des templates en Java 1.5 ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°938421
benou
Posté le 05-01-2005 à 20:01:26  profilanswer
 
n°938423
the real m​oins moins
Posté le 05-01-2005 à 20:01:47  profilanswer
 

:jap:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°938424
bobuse
Posté le 05-01-2005 à 20:01:55  profilanswer
 


oups, c'était dans un message que j'ai délété :D
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

n°938425
nraynaud
lol
Posté le 05-01-2005 à 20:02:10  profilanswer
 

harko > non, ça fonctionne par erasure qu'on te dit :o

n°938427
the real m​oins moins
Posté le 05-01-2005 à 20:03:04  profilanswer
 

ben oui, mais benou parlait d'un bon doc, donc je demandais lequel [:icon12]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°938428
bobuse
Posté le 05-01-2005 à 20:04:03  profilanswer
 

Harkonnen a écrit :

juste une question comme ça en passant : ça existe la spécialisation des templates en Java 1.5 ?


c'est-à-dire :??:

n°938429
benou
Posté le 05-01-2005 à 20:04:17  profilanswer
 

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 ?


---------------
ma vie, mon oeuvre - HomePlayer
n°938430
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-01-2005 à 20:06:38  profilanswer
 

bobuse a écrit :

c'est-à-dire :??:


un template spécialisé pour certains types :spamafote:
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


---------------
J'ai un string dans l'array (Paris Hilton)
n°938432
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-01-2005 à 20:07:44  profilanswer
 

nraynaud a écrit :

harko > non, ça fonctionne par erasure qu'on te dit :o


dommage, mais merci quand même [:benou_jap]


---------------
J'ai un string dans l'array (Paris Hilton)
n°938433
nraynaud
lol
Posté le 05-01-2005 à 20:07:55  profilanswer
 

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.)

n°938434
bobuse
Posté le 05-01-2005 à 20:08:31  profilanswer
 

Harkonnen a écrit :

un template spécialisé pour certains types :spamafote:
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


Ben un truc du genre alors :

Code :
  1. public <T extends Number> maFonction(T number) {
  2.   //...
  3. }

n°938436
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-01-2005 à 20:09:14  profilanswer
 

nraynaud a écrit :


(style optimiser le calcul d'un truc pour les ints par ex.)


c'est exactement pour ça que j'aurais voulu que ça existe :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
n°938437
benou
Posté le 05-01-2005 à 20:09:23  profilanswer
 

Harkonnen a écrit :

un template spécialisé pour certains types :spamafote:
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


bha oui :  

Code :
  1. public class TonGeneric<T extends Number> { ...}


et pouf, t'as une classe TonGeneric dont tu ne peux te servir qu'avec des nombres (Integer, BigInteger, Long, etc ...)


---------------
ma vie, mon oeuvre - HomePlayer
n°938438
bobuse
Posté le 05-01-2005 à 20:09:28  profilanswer
 

nraynaud a écrit :

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.)


ben suffit d'écrire plusieurs templates alors, non ?
 
Bon sur ce, je me rentre :D


Message édité par bobuse le 05-01-2005 à 20:11:31
n°938439
benou
Posté le 05-01-2005 à 20:11:45  profilanswer
 

bobuse a écrit :

ben suffit d'écrire plusieurs fonctions alors, non ?


ouais, ca devrait marcher je pense ...


---------------
ma vie, mon oeuvre - HomePlayer
n°938442
benou
Posté le 05-01-2005 à 20:14:08  profilanswer
 

genre :

Code :
  1. public class TonGeneric<T extends Number> {
  2.    // fonction generaliste
  3.    public void f(T t) { ... };
  4.    // fonction optimisée pour les Integer et ses sous-classes
  5.    public <SI extends T & Integer> void f(SI i) { ... };
  6. }


 
nan ?
 
ca compile ca ? [:gratgrat]


Message édité par benou le 05-01-2005 à 20:34:24

---------------
ma vie, mon oeuvre - HomePlayer
n°938448
the real m​oins moins
Posté le 05-01-2005 à 20:23:35  profilanswer
 

idea est pas content en tous cas: "wildcards may only be used as reference parameters"


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°938449
benou
Posté le 05-01-2005 à 20:24:44  profilanswer
 

the real moins moins a écrit :

idea est pas content en tous cas: "wildcards may only be used as reference parameters"


j'ai édité ...


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java 1.5] problème de type

 

Sujets relatifs
Problème evenement clavier sous fire fox.Découper une image en java
[OpenGL] Probleme avec le rouge ... [resolu][JAVA] Plus haut niveau que les socket
[RESOLU]problème de récupération de dateProblème TextArea + Javascript
Conseil ->Quel type de serveur pour une base MySQL?problème avec fichier .htaccess
Problème d'affichage des enregistrements dans un DataReport VB6[Java] Problème avec le type long
Plus de sujets relatifs à : [java 1.5] problème de type


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR