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 :

[deprecated][surcharge] je veux enlever l'avertissement


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut [deprecated][surcharge] je veux enlever l'avertissement
    voila j'ai une interface I1 qui donne le contract de plusieurs méthodes nottament M1

    maintenant j'implemente 2 classes C1 et C2 qui derivent respectivement de R1 et R2 mais ces classes C1 et C2 doivent implementer l'interface I1

    la classe R1 implemente déja une méthode M1 donc ma classe C1 est fidéle à l'interface I1 (pour cette méthode)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class C1 extends R1 implements I1
    { 
         .....
    }

    pour la classe R2, elle avait une méthode M1 qui est deprecated et remplacée par M2 mais je dois avoir une méthode M1 dans ma classe C2 à cause de l'interface

    donc voici ce que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class C2 extends R2 implements I1
    { 
        /** Pour être fidele à l'interface I1 et ne pas utiliser la méthode depreciée **/
        public void M1()  { super.M2(); }
     
        ....
     
    }
    comme ca je respecte mon interface et je n'utilise pas la méthode depréciée de R2, mais le compilateur me dit QUAND MEME que j'utilise une méthode depréciée !!!

    COMMENT puis-je enlever ce warning ?
    JBusyComponent, une API pour rendre occupé un composant swing.
    SCJP Java 6.0 (90% pass score)

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    tu cree I2 qui specialise I1, et tu descend ta methode M1 de I1 vers I2.
    C1 implemente I2 et C2 implemente I1

  3. #3
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    A mon avis tu ne peux pas enlever le warning, le mieux a faire si tu peux c'est de changer les noms de tes methodes pour eliminer ce conflit de noms

    Tu peux eviter le warning car si tu ne redefini pas M1 dans ta classe C2, l'interface sera satisfaite car M1 est present dans la classe mere R2, par contre si tu veux utiliser ton objet C2 par le biais de l'interface et que tu appeles M1, tu auras le message deprecated !

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Citation Envoyé par dude
    tu cree I2 qui specialise I1, et tu descend ta methode M1 de I1 vers I2.
    C1 implemente I2 et C2 implemente I1
    Ca revient a virer M1 de l'interface car si tu veux utiliser la liaison dynamique pour travailler sur des ensembles d'objets de type effectifs C1 et C2, la seule interface commune est I1 qui ne contient plus M1..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    oui, c'etait le but, mais je crois que je me suis emmele les pinceaux entre les classes, superclasses, qui implemente quoi, etc...

    pour etre plus coherent dans le design, il faut que les methodes de l'interface I1 soit declarees dans les classes qui implementent l'interface, et non dans les super classes.
    Ca revient donc effectivement a renommer les methodes M1 dans les super classes Ri.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 29
    Points : 34
    Points
    34
    Par défaut
    Il suffit que tu ajoutes le tag deprecated dans les commentaires de ta methode et le compilo la fermera.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class T extends JComponent {
    /**
    * @deprecated
    */			
    public void  disable() {}	
    public void enable(){}
    }
     
    => The method T.enable() overrides a deprecated method from JComponent
    Pour info enable et disable sont toutes les deux deprecated. Moi j'ai toujours trouvé ça crétin que les commentaires modifient la compilation...

    Sinon j'suis d'accord avec Bulbo que tu devrais plutôt concevoir ton appli autrement.

  7. #7
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    mouais, ca ne me satisfait que moyennement !

    pour le design, il faut compter sur la reprise de l'existant...

    Ce qui m'agace, c'est le warning alors qu'au final je n'utilise pas de code decrepated puisque je srucharge la méthode pour utiliser la bonne.

    bon, je vais me depatouiller en changeant le nom de la méthode dans l'interface, mais la je ne sais pas où je met les pieds.

    PS: merci pour vos réponses.
    JBusyComponent, une API pour rendre occupé un composant swing.
    SCJP Java 6.0 (90% pass score)

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

Discussions similaires

  1. [AC-2007] Macro pour agréger des requetes et enlever les avertissements
    Par kimai dans le forum VBA Access
    Réponses: 10
    Dernier message: 01/03/2011, 10h54
  2. Réponses: 2
    Dernier message: 03/04/2007, 09h44
  3. [Débutant] [Compilation] Avertissement deprecated
    Par javamantools dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2005, 15h33
  4. je veux apprendre la programmation quel language choisir??
    Par existance dans le forum Débuter
    Réponses: 26
    Dernier message: 06/08/2002, 05h32

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