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

Java Discussion :

Problème dans le polymorphisme


Sujet :

Java

  1. #1
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut Problème dans le polymorphisme
    Bonjour, j'ai une classe abstraite définit en gros de la facon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public abstract class LuceneIndexer {
    	// [...]
    	protected abstract Vector<RessourceProperty> getRessourceProperties(Object ressource);
    }
    Dans une classe qui hérite de LuceneIndexer j'essai de mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class LuceneRSSIndexer extends LuceneIndexer {
    
            // [...]
    	protected Vector<RessourceProperty> getRessourceProperties(RSSEntry entry) {
    		Vector<RessourceProperty> v = new Vector<RessourceProperty>();
    		v.add( new RessourceProperty("title", e.getTitle(), Field.Store.YES, Field.Index.TOKENIZED));
    		v.add( new RessourceProperty("description",e.getDescription(), Field.Store.YES, Field.Index.TOKENIZED));
    		}
    		return v;
    	}
    }
    Et RSSEntry est une classe qui extends Object.

    Cependant Eclipse me balance une erreur


    The type LuceneRSSIndexer must implement the inherited abstract method LuceneIndexer.getRessourceProperties(Object)


    Pourtant RSSEntry "is a" Object donc ca serait sencé fonctionner non ?
    En ce moment je suis obligé de mettre Object entry comme paramètre au lieu de RSSEntry entry et de faire un if (entry instanceof RSSEntry), j'aimerais éviter cela.


    Merci!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public abstract class LuceneIndexer {
    	// [...]
    	protected abstract Vector<RessourceProperty> getRessourceProperties(Object ressource);
    }
    Ca veut dire que la méthode doit accepter en paramêtre toutes les classes dérivant de object.

    Si ensuite tu l'implémente comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected Vector<RessourceProperty> getRessourceProperties(RSSEntry entry) {
    Tu n'accepte plus que les RSSEntry donc tu ne réponds pas au contrat de LuceneIndexer.

  3. #3
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonsoir,
    Je ne sais pas d'uù vient LucenceIndexer, mais si tu as le contrôle ladessus, tu peux peut être la générifier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public abstract class LuceneIndexer<T> {
    	// [...]
    	protected abstract Vector<RessourceProperty> getRessourceProperties(T ressource);
    }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class RssIndexer extends LuceneIndexer<RSSEntry> {
    	// [...]
    	protected abstract Vector<RessourceProperty> getRessourceProperties(RSSEntry ressource);
    }
    @+

  4. #4
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Excellente solution, merci!

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

Discussions similaires

  1. Problème dans la déclaration de Winmain
    Par lvdnono dans le forum DirectX
    Réponses: 3
    Dernier message: 29/05/2004, 13h38
  2. problème dans l'hebergement
    Par Redouane dans le forum ASP
    Réponses: 9
    Dernier message: 31/12/2003, 23h34
  3. Quel est le problème dans ce code ?
    Par Luther13 dans le forum C
    Réponses: 12
    Dernier message: 26/08/2003, 16h09
  4. Problème dans analisys Manager
    Par ien_ien23 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 11/07/2003, 14h38
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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