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 :

Appeler une fonction d'interface dans une classe non implémentée


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 507
    Points : 359
    Points
    359
    Par défaut Appeler une fonction d'interface dans une classe non implémentée
    Bonjour,
    j'ai crée une interface X :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface = X {
    	public void function_X();
    }
    je souhaite appeler la fonction function_X dans une classe A qui n'implemente pas l'interface, dans ce cas comment l'appeler ou comment instancier un objet de l'interface dans cette classe A ?

    L'interface est implémentée dans une classe B et c'est bien cette fonction fonction_X de la classe B que je souhaite appeler.Comment faire ?
    Merci d'avance.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Instancier quelque part un objet de cette classe B.
    Faire en sorte d'avoir accès à cette instance de B, dans ta classe A ou dans une instance de ta classe A.
    Appeler la méthode avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monInstanceDeB.laMethodeQueJeVeuxAppeler();
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 507
    Points : 359
    Points
    359
    Par défaut
    Je ne voudrais pas créer une instance de la classe B mais plutôt utiliser son implémentation d'interface et sa fonction associée.

    Dans ma classe A, j'ai initialisé un attribut de l'instance de la classe B comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AlerteManagerDelegate delegate;
    et j'appelle la fonction de la classe B comme ceci dans une fonction de la classe A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delegate.receiveAlertes(alertes);
    Mais ça me met "pointer Null" , l'application crashe

  4. #4
    Membre averti
    Homme Profil pro
    Java
    Inscrit en
    Mai 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 170
    Points : 444
    Points
    444
    Par défaut
    Citation Envoyé par Fooshi Voir le message
    Je ne voudrais pas créer une instance de la classe B mais plutôt utiliser son implémentation d'interface et sa fonction associée.

    Dans ma classe A, j'ai initialisé un attribut de l'instance de la classe B comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AlerteManagerDelegate delegate;
    et j'appelle la fonction de la classe B comme ceci dans une fonction de la classe A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delegate.receiveAlertes(alertes);
    Mais ça me met "pointer Null" , l'application crashe
    Et c'est bien normal puisque tu n'as rien initialisé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AlerteManagerDelegate delegate;
    Cette ligne te donne une référence vers un objet qui n'existe pas ( et donc NULL), d'où le null pointer exception.

    Il te faut donc instancier un objet AlerteManagerDelegate ou alors tu crées une méthode static.

  5. #5
    Membre averti Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 507
    Points : 359
    Points
    359
    Par défaut
    Je viens de comprendre , j'ai donc un attribut
    dans ma classe A
    que j'initialise dans le constructeur de ma classe B comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.delegate	= new AlertView();
    et l'appel fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delegate.receiveAlertes(alertes);

Discussions similaires

  1. [Drupal] Appel form ajout de contenu dans une colorbox ou directement dans une vue
    Par cpom dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 17/02/2012, 15h41
  2. Objet existant reconnu dans une fonction mais pas dans une autre
    Par Jiyuu dans le forum Général Python
    Réponses: 0
    Dernier message: 20/09/2011, 18h19
  3. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  4. [Dojo] Objet Dojo créé dans une fonction et utilisé dans une autre.
    Par hapalemur dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 05/06/2009, 13h59
  5. Réponses: 2
    Dernier message: 06/03/2008, 21h20

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