Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > Langage
Langage Forum d'entraide sur le langage Java et autres langages pour la JVM : syntaxe, POO, conventions, API standard. Avant de poster -> FAQ Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2013, 12h39   #1
Fooshi
Membre habitué
 
Avatar de Fooshi
 
Homme
Inscription : juin 2002
Messages : 389
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : juin 2002
Messages : 389
Points : 133
Points : 133
Par défaut Appeler une fonction d'interface dans une classe non implémentée

Bonjour,
j'ai crée une interface X :
Code :
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.
Fooshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 12h51   #2
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 104
Points : 10 335
Points : 10 335
Envoyer un message via Skype™ à thelvin
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 :
monInstanceDeB.laMethodeQueJeVeuxAppeler();
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher du poisson, il videra le lac et au bout de deux ans son village ne mangera plus jamais.
Partagez vos connaissances, mais aussi comment s'en servir.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 09h42   #3
Fooshi
Membre habitué
 
Avatar de Fooshi
 
Homme
Inscription : juin 2002
Messages : 389
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : juin 2002
Messages : 389
Points : 133
Points : 133
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 :
AlerteManagerDelegate delegate;
et j'appelle la fonction de la classe B comme ceci dans une fonction de la classe A :

Code :
delegate.receiveAlertes(alertes);
Mais ça me met "pointer Null" , l'application crashe
Fooshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 09h56   #4
kinaesthesia
Membre éclairé
 
Homme Anthony
Java Analyst Developer
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Anthony
Âge : 23
Localisation : Belgique

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

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 344
Points : 344
Envoyer un message via Skype™ à kinaesthesia
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 :
AlerteManagerDelegate delegate;
et j'appelle la fonction de la classe B comme ceci dans une fonction de la classe A :

Code :
delegate.receiveAlertes(alertes);
Mais ça me met "pointer Null" , l'application crashe
Et c'est bien normal puisque tu n'as rien initialisé.

Code :
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.
__________________
Kinaesthetic project
  • Une réponse pertinente ? Alors le bouton pouce vert +1 indique votre accord avec la solution proposée.
  • Une discussion est terminée ? Alors le bouton est votre ami !
kinaesthesia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 10h00   #5
Fooshi
Membre habitué
 
Avatar de Fooshi
 
Homme
Inscription : juin 2002
Messages : 389
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : juin 2002
Messages : 389
Points : 133
Points : 133
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 :
this.delegate	= new AlertView();
et l'appel fonctionne bien :

Code :
delegate.receiveAlertes(alertes);
Fooshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h26.


 
 
 
 
Partenaires

Hébergement Web