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 :

conception java appeler méthode sur un objet de type Object


Sujet :

Langage Java

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 268
    Points : 139
    Points
    139
    Par défaut conception java appeler méthode sur un objet de type Object
    Bonjour,

    dans mon application, j'ai une interface ayant les fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface IndicatorType{
      evaluate();
      toXML();
    }
    J'ai une map contenant des map de <String,Object>() .
    Object étant en fait différents objets implémentant l'interface IndicatorType.
    A, B , C , par exemple.

    Quand j'itère ma map de map je récupère donc des maps de <String,Object>()
    que j'itère de nouveau.

    J'aimerais appeler la fonction evaluate() de chaque objet , comment faire?

    Est-ce qu'il y a moyen de faire mieux que mon interface?

    J'arrive à récupérer l'objet mais je ne sais pas en quoi le caster pour appeler sa méthode evaluate() car l'objet sera tantôt de type A , B , C .

    Merci de l'aide.

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    en fait il y a deux cas possible
    - typer la map différemment (pour l'exemple une hashmap):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Map<String, Map<String, ? extends IndicatorType>> map = new HashMap<String, Map<String, ? extends IndicatorType>>();
    map.get("clé 1").get("clé 2").evaluate();
    - ou tout simplement casté ton objet en sortie en IndicatorType
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Map<String, Map<String, Object>> map = new HashMap<String, Map<String, Object>>();
    ((IndicatorType)map2.get("clé 1").get("clé 2")).evaluate();

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 268
    Points : 139
    Points
    139
    Par défaut
    C'est possible de caster sur une interface?

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par molesqualeux Voir le message
    C'est possible de caster sur une interface?
    bien sur que c'est possible, sinon je ne te l'aurais pas proposé comme solution

    la solution 1 est cependant meilleur car du même coup tu empêches de mettre dans la map autre chose que des classes qui implémente IndicatorType et tu n'a évidemment pas besoin de faire le cast.

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Alkhan Voir le message
    - typer la map différemment (pour l'exemple une hashmap):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Map<String, Map<String, ? extends IndicatorType>> map = new HashMap<String, Map<String, ? extends IndicatorType>>();
    map.get("clé 1").get("clé 2").evaluate();
    Il faut utiliser Map<String,IndicatorType> sinon tu ne pourras pas remplit ta Map.

    Les wildcards ? extends et ? super servent à limiter l'accès à une classe paramétré, afin d'écrire des méthodes plus génériques...


    a++

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Les wildcards ? extends et ? super servent à limiter l'accès à une classe paramétré, afin d'écrire des méthodes plus génériques...
    Effectivement, autant pour moi, j'ai répondu un peu vite

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2014, 22h40
  2. Constructeur + appels méthodes sur la même ligne
    Par Amnesiak dans le forum Langage
    Réponses: 2
    Dernier message: 23/10/2008, 00h12
  3. [POO] ajout méthodes sur l'objet Array
    Par kimcharlene dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/04/2008, 16h40
  4. Réponses: 2
    Dernier message: 26/01/2007, 10h50
  5. méthode sur l'objet courant?
    Par mathher dans le forum C++
    Réponses: 3
    Dernier message: 31/03/2006, 17h27

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