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 :

invoke abstract class method


Sujet :

Java

Vue hybride

azsoft invoke abstract class method 25/09/2011, 18h08
adiGuba Salut, Tu ne peux pas... 25/09/2011, 18h18
azsoft Merci 25/09/2011, 18h55
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Par défaut invoke abstract class method
    Bonjour,
    Mon but et d'invoquer la method B.OnRun() par réflexion sachant que les 2 class sont dans des jar.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public class A extends B
    {
     
       protected void OnRun()
       {
     
       }
     
    }
     
    public abstract class B
    {
     
       protected void OnRun()
       {
     
       }
    }
    ce code m'appelle la méthode A.OnRun() et non B.OnRun()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Class< ? > cClass = clClassLoader.loadClass( "test.A" );
    Object oObject = cClass.newInstance();
     
    Method mOnRun = GetDeclaredMethods( oObject.getSuperclass(), "OnRun" );
    mOnRun.invoke( oObject, new Object[0] );


    et ce code générer une Exception (NullPointerException )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Method mOnRun = GetDeclaredMethods( oObject.getGenericSuperclass(), "OnRun" );
    mOnRun.invoke( null , new Object[0] );


    Merci

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu ne peux pas appeler une méthode "parente" avec la reflection...

    [edit] plus précisément, tu peux appeler une méthode "parente", mais à l'exécution se sera la version redéfinie qui sera exécuté. C'est les bases mêmes de l'approche "Objet" de Java...

    a++

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Par défaut
    Merci

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

Discussions similaires

  1. Abstract class (déclaration globale)
    Par choas dans le forum VB.NET
    Réponses: 4
    Dernier message: 05/02/2007, 20h27
  2. [Langage][Classe][Methode]Comment récuperer les arguments d'une fonction ?
    Par FremyCompany dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/07/2006, 16h06
  3. Super classes et sous-classes/Méthodes
    Par smag dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 23h10
  4. [Exception]Connaitre la pile d'appel de classes/méthodes
    Par salome dans le forum Général Java
    Réponses: 2
    Dernier message: 19/03/2005, 20h21

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