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 :

surclasser un membre static


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 543
    Points
    543
    Par défaut surclasser un membre static
    Dans mon code j appelle une methode static d une classe
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void fct () {
      MyClass.do();
    }
    Ca marche tres bien mais pour des tests, je veux avoir un comportement
    different. J ai donc cree une sous classe de MyClass.

    Probleme: je veux que ma classe appelant appelle normalement MyClass mais que lorsque je suis dans un test JUnit, elle appelle MyClassForTest

    A debut j avais pense declarer un attribut static dans ma class appelante et avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void fct () {
      myClass_Or_MyClassForTest.do();
    }
    Est ce possible ?
    Comment le declarer ?
    Si je fais static MyClass myClass_Or_MyClassForTest; je dois creer un objet de type Myclass et donc ne plus acceder a ma classe statiquement

    PS: il y a évidement la solution de faire un test dans MyClass pour savoir si je suis en mode test ou non, mais je prefererai ne pas la toucher

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    j'ai du mal à comprendre ce que tu veux faire exactement, mais l'appel de méthodes static se fait sur le type, et non pas l'instance. Cela implque que la polymorphie de s'applique pas. Il en est de même pour les propriétés.

    Peut-tu détailler un peu plus ton problèle ?
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 543
    Points
    543
    Par défaut + de detail
    Bonjour

    mon besoin est le suivant:
    J appelle une methode static . Mais pour mon test, je veux en appeler une autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1) solution
    void fct() {
    if (isTestMode) {
      MyClassTest.do();
    } else {
      MyClass.do();
    }
    mais j aimerai pouvoir faire ca sans modifier ma fonction et rajouter if (isTestMode)

    D ou l idee d utiliser l heritage (ce qui marcherai si on avait pas un appel static) et de definir a l initialisation ce qu on utilise

    mais j ai comme l impression que ce n est pas possible

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Si tu as une relation d'héritage entre MyClass et MyClassTest tu pourras faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    voidfct() {
    ((MyClass)MyClassTest).do();
    }
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

Discussions similaires

  1. [JSTL] Utilisation d'un membre static ?
    Par santana2006 dans le forum Taglibs
    Réponses: 4
    Dernier message: 04/04/2006, 11h19
  2. Réponses: 3
    Dernier message: 12/01/2006, 21h26
  3. Réponses: 3
    Dernier message: 28/11/2005, 12h15
  4. [Debutant] Problème avec des membres static
    Par Mathieu.J dans le forum Débuter
    Réponses: 4
    Dernier message: 24/08/2005, 17h09
  5. pointeur membre static de classe
    Par Ca$ul dans le forum C++
    Réponses: 3
    Dernier message: 26/08/2004, 13h02

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