IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Joker et Generic


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut Joker et Generic
    Bonjour ,

    je ne trouve pas la solution à ce problème apparemment simple

    Je voudrais remplacer toutes les pages d’une collection par un livre.

    Le code coince au niveau de l’appel de la méthode fill

    Merci d’avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    package effacer;
     
    import java.util.ArrayList;
    import java.util.List;
     
    	class Livre
    	{
    		public void methode()
    		{
    			System.out.println("methode livre");
    		}
    	}
     
    	class Page extends Livre
     
    	{
    		static <T> void fill(List<? super T> liste, T elem) {
    		int size = liste.size();
    		for (int i = 0; i < size; i++)
    		liste.set(i, elem);
    		}
     
    		public void methode()
    		{
    			System.out.println("methode page");
    		}
    	}
     
     
    	public class Test {
    		public static void main(String[] args) {
     
     
    			Page page1 = new Page();
    			Page page2 = new Page();
    			Page page3 = new Page();
     
    			List<Page> pages = new ArrayList<Page>();
    			pages.add(page1);
    			pages.add(page2);
    			pages.add(page3);
     
    			Livre livre2 = new Livre();
     
    			Page.fill(pages,livre2);
     
     
    		}
    	}

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Une List<Page> ne peut contenir que des Page.
    un Livre n'est pas une Page, donc on ne peut pas mettre de Livre dans une List<Page>,

    donc c'est impossible. Fais plutôt une List<Livre>.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut Bonjour Telvin
    Je vois avec grand plaisir que tu m'as répondu promptement et je t'en remercie

    Au sujet de la question, je reconnais que le choix des classes est très mauvais au niveau sémantique mais le problème n'est pas là

    J'ai fait une erreur en utilisant mal le mot-clé super (je l'ai utilisé comme extends)

    A toutes fins utiles, voici le code que j'ai retravaillé sémantiquement et en utilisant convenablement super

    Merci quand même !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    package effacer;
     
    import java.util.ArrayList;
    import java.util.List;
     
    	class Voiture
    	{
    		public void methode()
    		{
    			System.out.println("methode Voiture");
    		}
    		public static <U> void affiche(List<U> serie)
    		{
    			for (U ob : serie) {
    				System.out.println(ob);
    			}				
    		}
    	}
     
    	class Fiat extends Voiture
     
    	{
    		static <T> void fill(List<? super T> liste, T elem)
    		{
    			int size = liste.size();
    			for (int i = 0; i < size; i++)
    			liste.set(i, elem);
     
    			for (int i = 0; i < size; i++)
    				System.out.println(liste.get(i));
    		}
     
    			public void methode()
    			{
    				System.out.println("methode Fiat");
    			}		
    	}
     
     
    	public class Test {
    		public static void main(String[] args) {
     
     
    			Voiture voiture1 = new Voiture();
    			Voiture voiture2 = new Voiture();
    			Voiture voiture3 = new Voiture();
     
    			List<Voiture> voitures = new ArrayList<Voiture>();
    			voitures.add(voiture1);
    			voitures.add(voiture2);
    			voitures.add(voiture3);
    			Voiture.affiche(voitures);
     
    			Fiat fiat = new Fiat();
     
    			Fiat.<Fiat>fill(voitures,fiat);
     
     
    		}
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rentrer des valeur generic avec des caractères joker
    Par javatar dans le forum Langage
    Réponses: 5
    Dernier message: 27/12/2010, 18h49
  2. Désactiver le joker dans l'expression "where like '%\%%
    Par opeaucelle dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/08/2005, 08h16
  3. [generic] pb création d'une List []
    Par yoplaboom dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01
  4. [Ada] Generics...
    Par dclink dans le forum Ada
    Réponses: 3
    Dernier message: 22/06/2005, 16h56
  5. [Generics] Classe générique
    Par norkius dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2004, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo