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

avec Java Discussion :

[Débutant] créer une méthode particuliere utilisable à volonté


Sujet :

avec Java

  1. #1
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut [Débutant] créer une méthode particuliere utilisable à volonté
    Bonjour tous,

    j'ai une classe avec plusieurs méthodes. rien de magnifique.

    J'ai remarqué sans grand intérêt, que l'on pouvait utliser le toString n'importe ou et presque n'importe quand ?

    Exemple :

    monObjet.getNom().toString();
    monObjet.getNom().toString().toString().toString().toString();

    Ce n'est pas le résultat qui m'interresse, mais plutot, j'aimerais savoir comment créer une méthode par exemple isEmpty() que je pourrais appelé n'importe quand à la maniere de ce toString sur ma ligne de code.

    exemple :

    monObjet.getNomObjet().isEmpty();


    merci !

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Oui, tu crées une classe generique avec ta méthode isEmpty() et tu fais étendre toutes tes classes de cette classe (crade).

    Mieux, tu fais une interface décrivant la méthode isEmpty() et tu fais implémenter cette interface dans tes autres classes (propre).

    Pas d'autre solution.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut
    oui, je vais essayer cette solution ....

    mais créer une interface ... oui ok, je pourrais l'appeler comment ? parce qu'elle risque d'évoluer ....

    genre package :
    [chemin].[chemin].[chemin].service.util
    -- unNom.class [ici l'interface]


    proprement et professionnellement je pourrais la nommer comment ?

    c'est peut être bête mais j'en sais rien.

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Tout dépend du sens que tu veux donner à cette méthode isEmpty().

    Un nom serait peut-être Emptyable (cf Comparable, Serializable, Cloneable, ...)

    Pour le nom du package, c'est selon ton organisation actuelle.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut
    ok !
    merci natha.

    ++

  6. #6
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut
    beuh ?

    mais je ne peux pas décrire le comportement d'une méthode dans une interface ? je peux juste la déclarer ...


    je voudrais bien un ti exemple tout bête, si tu as 2 minutes.


    j'ai créé mon interface :

    package fr.[chemin].[chemin].[chemin].service.util;

    public interface Emptyable {

    }


    ensuite, dans la classe en question je l'implemente, mais j'ai besoin de la définir. donc pour chaque classe qui serait amené a implémenter cette interface je vais devoir répéter le même contenue de corps ....

    mais comment Sun on fait le toString() qui s'utilise a volonté ?

  7. #7
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Le toString() est défini au plus haut niveau possible de la hiérarchie, la racine Object. Tout les objets en héritant implicitement adoptent de facto le 'comportement' toString().

    Le secret est de mixer à la fois l'interface et l'héritage. Si tu possèdes une classe ancêtre commune à toutes les autres, tu lui fais implémenter l'interface et définir le comportement une fois pour toute. Tous les héritiers en bénéficieront alors.

  8. #8
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut
    rôôôôh ...

    mais moi a mon niveau ? comment je peux faire ?

    [EDIT]

    ah je sais !

    je vais faire une classe avec méthode static et basta ! non ?

  9. #9
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Tu veux une solution propre ou crade ?

  10. #10
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut
    crade, j'aime bien le gras & crade ...

    j'déconne ...
    propre bien sûr, un truc bling bling

    je suis tout ouïe ...

  11. #11
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Propre mais soumis à contrainte:

    Viser l'ensemble des classes par un aspect réalisant l'introduction de l'interface et son implémentation. C'est propre et net.
    Pb: l'appel doit se faire par transtypage préalable vers l'interface. C'est lourd.

    Crade et hérétique:

    Etendre l'implémentation d'Object dans le jdk et masquer l'original par l'extension au travers du bootclass path. Très efficace et appel de méthode direct.
    Pb: jouer avec les fondemments de java est très risqué.

  12. #12
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Tommy31 Voir le message
    Crade et hérétique:

    Etendre l'implémentation d'Object dans le jdk et masquer l'original par l'extension au travers du bootclass path. Très efficace et appel de méthode direct.
    Pb: jouer avec les fondemments de java est très risqué.
    AAAAAAAHHHHHHHH !!!!

    Vade retro !!!
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  13. #13
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut
    Viser l'ensemble des classes par un aspect réalisant l'introduction de l'interface et son implémentation.
    gloups ...

    ouais, donc heuuuuuuu ... oui !

  14. #14
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Points : 318
    Points
    318
    Par défaut
    Citation Envoyé par singleProject Voir le message
    je vais faire une classe avec méthode static et basta ! non ?
    Ca me semble une bonne idée, mais ça risque de dépendre de ce que tu fais dedans... Si ton traitement dépend du type de l'objet que tu vas passer en paramètre, ça peut être couteux...

    Je parle de choses du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static boolean isEmpty(Object monObj) {
      if(monObj instanceof maClasse1) {
        // ...
      } else if(monObj instanceof maClasse2) {
        // ...
      } ....
    }
    Citation Envoyé par Tommy31 Voir le message
    Crade et hérétique:
    [...]
    Pb: jouer avec les fondemments de java est très risqué.

    J'aime beaucoup !

  15. #15
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 128
    Points
    128
    Par défaut
    DevTeam_, oui bien sûr,

    en fait c'est des traitements tout simple, struts propose justement validator, mais dans le cas me concernant, une méthode ToolBox.isEmpty(String value)
    signée ainsi public static String isEmpty(String value) sera amplement suffisante, et beaucoup plus simple à comprendre.

    faire autrement ... sortir la grosse bertha d'entrée de jeux ... j'en reste un "chwiya" sceptique.

    a+

  16. #16
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Hum, je vois a quoi sert ton isEmpty() maintenant. Simplement a tester si une valeur toString() par exemple serait nulle ou vide ?

    Dans JGoodies validation il y a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValidationUtils.isEmpty(String str)
    qui renvoie un boolean.

    Tout bêtement. La classe utilitaire est quand même le plus approprié dans ces cas là (implémentation unique).
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  17. #17
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Dans StringUtils de commons-lang d'apache aussi: http://commons.apache.org/lang/api-r...a.lang.String)

Discussions similaires

  1. [débutant] Créer une nouvelle méthode pour un objet
    Par gvdmoort dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 05/12/2007, 08h57
  2. Réponses: 12
    Dernier message: 23/03/2006, 14h13
  3. Réponses: 3
    Dernier message: 21/03/2006, 13h12
  4. [Débutant] Créer une instance avec le nom d'une classe
    Par Quetzalcoatl dans le forum Langage
    Réponses: 7
    Dernier message: 23/01/2006, 20h43

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