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

avec Java Discussion :

Passer une interface à une méthode?


Sujet :

avec Java

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut Passer une interface à une méthode?
    salut


    dans du code qu'on m'a donné et que la personne n'est plus là, j'ai une interface

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface Context{
      User getUser();
    }
    dans une classe, j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    setCurrentContext(Context currentContext){
      context = currentContext;
    }
    je comprends pas trop comment obtenir getUser... et comment on fait pour le setter?

    une idée, car je suis un peu embrouillé

    merci

  2. #2
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    tu n'implémente jamais ton interface nulle part ??

  3. #3
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    En fait tu ne passes pas une interface à une méthode, tu passes un objet dont tu sais que la classe implémente l'interface Context, et c'est tout !
    Donc la seule opération que tu puisses faire avec currentContext est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User user = currentContext.getUser();
    Tu ne peux pas faire de setUser() puisque la méthode n'est pas déclarée par l'interface. Par contre il y a de fortes chances que la classe implémentant l'interface dispose d'une telle méthode (éventuellement privée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class ContextImpl implements Context {
      User user;
     
      public ContextImpl(User user) {
        this.user = user;
      }
      protected void setUser(User user) {
        this.user = user;
      }
      public User getUser() {
        return user;
      }
     
    }

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut
    Citation Envoyé par herve91 Voir le message
    En fait tu ne passes pas une interface à une méthode, tu passes un objet dont tu sais que la classe implémente l'interface Context, et c'est tout !
    Donc la seule opération que tu puisses faire avec currentContext est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User user = currentContext.getUser();
    Tu ne peux pas faire de setUser() puisque la méthode n'est pas déclarée par l'interface. Par contre il y a de fortes chances que la classe implémentant l'interface dispose d'une telle méthode (éventuellement privée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class ContextImpl implements Context {
      User user;
     
      public ContextImpl(User user) {
        this.user = user;
      }
      protected void setUser(User user) {
        this.user = user;
      }
      public User getUser() {
        return user;
      }
     
    }
    ok merci
    et je m'y prend comment pour faire le setContext?

  5. #5
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    dans quelle classe est écrite ta méthode setContext ?? C'est avec objet de cette classe que tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonObjet.setContext(...);

  6. #6
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Tu crée une classe ContextImpl (par exemple) implémentant l interface Context. Tu instancies un objet de type ContextImpl, et tu le passe en argument de ton setContext().

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/06/2012, 11h51
  2. Réponses: 1
    Dernier message: 15/12/2011, 21h12
  3. Mettre en paramètre d'une fonction une interface, méthode etc.
    Par Leniouns dans le forum Général Java
    Réponses: 22
    Dernier message: 15/12/2011, 08h57
  4. Réponses: 4
    Dernier message: 12/03/2010, 19h50
  5. ajouter une scrollbar à une interface
    Par ddach dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2008, 18h11

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