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

  FORUM HardWare.fr
  Programmation
  Java

  Pourquoi ça compile pas ? Iterable<Interface> ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pourquoi ça compile pas ? Iterable<Interface> ?

n°1996292
Ricco
Retour au pays
Posté le 26-05-2010 à 21:12:32  profilanswer
 

Salut,
 
Je viens de tomber sur un truc un peu bizarre en java. Bizarre ou en tout cas que j'avais pas prévu dans mon design.
 

Code :
  1. package testiterator;
  2. import java.util.Iterator;
  3. public class Main
  4. {
  5.     public static void main(String[] args)
  6.     {
  7.         new Ecrivain1Ligne().doIt( new Ligne() ); // Compile
  8.         new Ecrivain().doIt( new Liste() ); // Compile pas
  9.     }
  10. }
  11. interface CSVwritable
  12. {
  13.     public String toRowCSV();
  14. }
  15. class Ligne implements CSVwritable
  16. {
  17.     public String toRowCSV()
  18.     {
  19.         return "Test" ;
  20.     }
  21. }
  22. class Liste implements Iterable<Ligne>
  23. {
  24.     public Iterator<Ligne> iterator()
  25.     {
  26.         return new Iterator<Ligne>() {
  27.             public boolean hasNext()
  28.             {
  29.                 throw new UnsupportedOperationException("Not supported yet." );
  30.             }
  31.             public Ligne next()
  32.             {
  33.                 throw new UnsupportedOperationException("Not supported yet." );
  34.             }
  35.             public void remove()
  36.             {
  37.                 throw new UnsupportedOperationException("Not supported yet." );
  38.             }
  39.         };
  40.     }
  41. }
  42. class Ecrivain
  43. {
  44.     void doIt( Iterable<CSVwritable> c )
  45.     {
  46.         // void
  47.     }
  48. }
  49. class Ecrivain1Ligne
  50. {
  51.     void doIt( CSVwritable c )
  52.     {
  53.         // void
  54.     }
  55. }


 
En gros je veux créer une méthode doIt( Iterable<CSVwritable> )  
 
Les objets Ligne sont de type CSVwritable. Je créer un objet de type Iterable<Ligne> mais si j'essaye de le passer à mon doIt(), ça ne passe pas, j'ai une erreur à la compilation. Pourtant les Ligne sont bien des CSVwritable, ce que je vérifie avec l'autre doIt().
 
De quoi suis-je passé à côté ? Comment faire ce que je veux ?


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
mood
Publicité
Posté le 26-05-2010 à 21:12:32  profilanswer
 

n°1996371
Ricco
Retour au pays
Posté le 27-05-2010 à 10:19:52  profilanswer
 

Bon j'ai eu ma réponse sur http://www.developpez.net/forums/d [...] e-qqchose/
 
Il fallait écrire : void doIt( Iterable<? extends CSVwritable> c )
 


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry

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

  Pourquoi ça compile pas ? Iterable<Interface> ?

 

Sujets relatifs
[Swing/Netbeans] Problème pour organiser l'interfaceinterface java et codes
trouver un programme en c qui lit des codes provenant d'un interface jaide pour interface
Passer d'un outil développer en vba excel à une interface webGénérer un PDF à partir d'une interface excel en ligne
template et interface+héritageClasse abstraire et Interface
Interface javaprobleme java interface graphique
Plus de sujets relatifs à : Pourquoi ça compile pas ? Iterable<Interface> ?


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