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 :

Bonnes pratiques (this, getter, setter)


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 165
    Points : 116
    Points
    116
    Par défaut Bonnes pratiques (this, getter, setter)
    Bonjour,

    je n'ai pas une énorme expérience en java, et la plupart du temps sur Netbeans (vieille version Unix ).

    Je viens de passer sous Eclipse, et celui-ci est franchement plus sympathique, mais me fait des refactoring que je ne comprends pas toujours.

    Je souhaiterai avoir votre avis donc sur quelques bonne pratiques :

    - est il nécessaire de mettre à chaque fois "this." pour affecter un attribut de la classe courante ? il me semblait que ce n'était fait que si y avait un doute par rapport à un paramètre portant le même nom.
    Ce n'est peut être pas obligatoire, mais est ce que cela devient courant de les mettre à chaque fois pour faciliter la lecture et la compréhension en cas de reprise du code ?
    Quelles bonnes pratiques à avoir ? Est il courant de tout mettre à this. si y a un mélange dans une méthode ?

    - Eclipse en créant un getter et un setter d'un attribut, que j'avais déjà affecté dans d'autres méthodes, est allé modifier le code pour faire un appel au setter.
    Pourquoi ?
    Là encore, les getters & setter me semblent utiles pour des appels externes à la classe. Pourquoi en interne privilégie-t-il cela ?

    Merci.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 108
    Points : 255
    Points
    255
    Par défaut
    Bonjour,

    Pour ma part, j'utilise le "this." que lorsqu'on passe un parametre d'une methode ayant le meme nom qu'un attribut de classe. Sinon celui ci est implicite.
    Inutile de charger le code avec des this pour tous les attributs... la relecture deviendrais vite penible je pense

    Concernant ton deuxième point, tu declares bien tes attributs private ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 165
    Points : 116
    Points
    116
    Par défaut
    Oui mes attributs sont private.

    Donc je comprends bien que les seuls accès sont les setter & getter. Mais pas en interne généralement.....

    Je pose toutes ces questions car je viens de découvrir des subtilités qui se sont "inversées" d'une version à l'autre de java (ex: marquer toutes les méthodes @Override d'une classe d'implémentation d'une interface alors que cela n'était pas nécessaire auparavant, maintenant c'est warning).

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Donner les accès aux attributs privés utilisés uniquement en interne via des "getter" et "setter" ne me semble pas être utile.

    Cela peut éventuellement se justifier si un attribut est utilisé en interne ET accessible par d'autres classes.
    Dans ce cas, il faut certainement utiliser synchronised dans les "getter" et "setter" et donc alors l'utilisation en interne doit passer par ces méthodes

    sinon, pour ta gouverne, les dernières versions de NetBeans donne le choix d'accès ou non par getter pour l'usage interne.
    Mais ça c'est parce que j'aime bien NB, je suis donc partial.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Pistes de réflexion : http://codemonkeyism.com/generation-...ramming-style/

    Il ne faut pas forcément obéir à Eclipse, c'est lui qui doit t'obéir, c'est comme un GPS...
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Donner les accès aux attributs privés utilisés uniquement en interne via des "getter" et "setter" ne me semble pas être utile.

    Cela peut éventuellement se justifier si un attribut est utilisé en interne ET accessible par d'autres classes.
    Dans ce cas, il faut certainement utiliser synchronised dans les "getter" et "setter" et donc alors l'utilisation en interne doit passer par ces méthodes

    sinon, pour ta gouverne, les dernières versions de NetBeans donne le choix d'accès ou non par getter pour l'usage interne.
    Mais ça c'est parce que j'aime bien NB, je suis donc partial.
    Un interêt des getter, setter interne ou non:
    - avoir facilement une trace de tout accès et modification d'un attribut, pour un log ou pour du debug

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Citation Envoyé par JoeChip Voir le message
    J'ai suivi le lien.
    Franchement quand il dit qu'il ne faut pas du tout utiliser de setters,
    il se fourvoie complètement pour les raisons évoquées dans les posts précédents.

    Encore une autre raison d'utiliser getters/setters est que c'est la norme "beans".
    C'est le cas si je veux ajouter des composants personnalisés à un IDE
    car celui-ci s'attend à avoir un getter/setter sur chaque attribut pour pouvoir le manipuler.

    Je pense que @Targan avait besoin de savoir quels types de raisons il y a pour programmer de cette façon.
    On lui en a donné un aperçu - non exhaustif - qui lui permettra de "doser" les getters/setters
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 165
    Points : 116
    Points
    116
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Donner les accès aux attributs privés utilisés uniquement en interne via des "getter" et "setter" ne me semble pas être utile.

    Cela peut éventuellement se justifier si un attribut est utilisé en interne ET accessible par d'autres classes.
    Dans ce cas, il faut certainement utiliser synchronised dans les "getter" et "setter" et donc alors l'utilisation en interne doit passer par ces méthodes

    sinon, pour ta gouverne, les dernières versions de NetBeans donne le choix d'accès ou non par getter pour l'usage interne.
    Mais ça c'est parce que j'aime bien NB, je suis donc partial.
    Je suis un peu dans un cas comme celui là effectivement.

    Je suis sur une classe de type "ViewModel" pour une utilisation dans un pattern MVVM. J'ai justement des attributs à mettre, avec des getters & setters (je présume que cela impose même le fait de devoir utiliser getXX et setXX, faudrait que je teste pour voir si cela fonctionne avec un getter style isXX pour des booleans mais j'en doute :p).

    Sur les setters, y a une annotation qui permet de "mettre à jour" l'interface graphique quand un appel est réalisé. Tout est automatisé, je ne fais pas d'appel manuel donc les synchronized ne sont pas forcément utile.
    Cela expliquerait peut être pourquoi Eclipse veut mettre des appels aux setters, au lieu de modifier directement l'attribut....maintenant j'ai la possibilité de mettre une annotation pour indiquer la mise à jour de mon attribut dans ma méthode tierce qui le modifie. Donc je peux parfaitement me passer du setter.

    Anyway, merci pour l'article, c'est très intéressant même si j'avoue que je suis aussi perplexe sur certains points.

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Je te confirme que le getter pour un boolean est bien de la forme isXXXX.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    this -> uniquement en cas d'ambiguité ou de possible doute.

    accès en interne au getter / setter -> ça a ses avantages, mais je trouve que ça alourdis le code. A noter qu'il y a une case à cocher pour utiliser ou non les getters / setters en appel interne

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 165
    Points : 116
    Points
    116
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Je te confirme que le getter pour un boolean est bien de la forme isXXXX.
    Certes, mais je ne suis pas sur que le framework qui "bind" la propriété (en EL expression) via les getters & setters puisse savoir de quel type est l'attribut et donc de prendre le bon getter.

    Mais bon ce n'est pas le sujet....

    tchize_ : quels avantages selon toi ? à part ce que Népomucène nous a exposé...

  12. #12
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Points : 59
    Points
    59
    Par défaut
    Attention à bien lire l'article de codemonkey : il ne parle pas d'affecter directement les variables sans passer par un setter. Il dit qu'autant que possible, les objets devraient être immutables (on ne peut pas les modifier après leur création) et donc qu'on ne modifie pas les variables du tout ! C'est généralement une bonne pratique que de rendre immutable tout objet qui peut l'être, mais ce n'est pas le cas de tous.

    Pöur en revenir au sujet : le principal avantage du getter/setter est de rendre l'implémentation invisible. Le champ peut être chargé paresseusement (à la première initialisation), la valeur peut être calculée plutôt que stockée, etc. Pour les accès externes, c'est AMHA indispensable sur tout projet de taille moyenne qui est amené à évoluer dans le temps. Le coût pour le mettre en place est négligeable (l'IDE le fait tout seul), et ça fait économiser énormément de temps lorsqu'on doit mettre en place l'un des éléments évoqués plus haut.

    En interne dans la classe, je trouve ça assez lourd. J'aurais tendance à utiliser directement l'attribut. Si je modifie un jour la classe pour que le getter face un truc en plus (chargement paresseux par exemple), ça ne me coûtera pas grand chose de faire une passe rapide sur la classe pour vérifier les utilisations de l'attribut.

    Ah, et synchronized sur les getters : surtout pas sans bonne raison ! Ça provoque des goulots d'étranglement dans le code, et c'est très rarement utile. Sur les setters, on peut avoir des cas où ça se justifie, mais honnêtement : écrire du code robuste et performant en multithread, ce n'est pas facile. Le plus simple est de considérer que tout objet qui n'est pas écrit spécifiquement pour être partagé entre différents threads ne doit pas l'être, donc pas la peine de s'embêter avec des synchronized.

  13. #13
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Attention à bien lire l'article de codemonkey : il ne parle pas d'affecter directement les variables sans passer par un setter. Il dit qu'autant que possible, les objets devraient être immutables
    Oui, en effet. Pratiquement on devrait arriver à des formes comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    new MainFrame(new MyMainParams())
        .addMenuBar(new MenuBar()
            .addMenu(new Menu ("Aide")
                .addLine(new MyAPropos())
                .addLine(new MyTableDesMatieres())
                [...]
            )
            [...]
        )
        [...]
        .start();
    (Avec comme convention que où il n'y a pas "My" il s'agit de la classe standard, bien sûr en pratique faut pas forcément mettre "my"...).

    On repousse alors tous les détails plus "bas", en on fait vraiment de l'objet, et non de l'impératif structuré en forme d'objets. De cette façon on ne se répète pas (en tout cas localement), et les sources ressemblent à l'appli, à chaque niveau, avec de plus en plus de détails, donc d'attributs et aussi de répétitions, quand on descend en niveau.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  14. #14
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Il a écrit textuellement :
    You should not use setters. Think about each setter you want to write, are they really necessary for your fields? Better create new copies of your objects if values change
    Et là je ne vois pas bien où il veut en venir :
    Ex : j'ai besoin d'une zone de saisie particulière et je crée un composant qui étend JtextField.
    Pour placer une valeur par défaut j'utilise setText()
    Ensuite l'utilisateur fait sa saisie et a donc modifié le texte
    pour récupérer ce texte et le mettre dans le SGBD, j'utilise getText()

    Pourquoi et comment veut-il que je fasse une copie de mon objet ?????

    J'ai l'impression qu'on ne parle pas de la même chose.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Dans l'absolu c'est bien ce qui se passe. Ce ne sont pas des nouveau JTextField qui sont créés mais des nouvelles String Bon c'est du chipo mais il n'a pas tout à faire tord. Pas mal d'objet qu'on code avec des getters /setters pourraient être plutot des objets immutable. Evidement, pas tous, mais on à la sale tendance à très peu utiliser final dans des classes qui pourtant ne sont que des coquilles autour d'une ensemble de donneés immutables

    Tiens par exemple, combien pensent en programmant leur setters "si je fais ça, mon objet ne pourra jamais être une clé dans une Map"

  16. #16
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Ouais, mettre systématiquement des getters/setters, c'est un peu encombrer d'office le code tout en renonçant partiellement à réfléchir. Il faut aussi ne pas oublier aussi qu'on peut vouloir rigidifier le code par endroits, ou bien vouloir des performances d'accès à la donnée qui nécessitent d'éviter les cascades de get/set.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  17. #17
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Dans l'absolu c'est bien ce qui se passe. Ce ne sont pas des nouveau JTextField qui sont créés mais des nouvelles String Bon c'est du chipo mais il n'a pas tout à faire tord. Pas mal d'objet qu'on code avec des getters /setters pourraient être plutot des objets immutable. Evidement, pas tous, mais on à la sale tendance à très peu utiliser final dans des classes qui pourtant ne sont que des coquilles autour d'une ensemble de donneés immutables

    Tiens par exemple, combien pensent en programmant leur setters "si je fais ça, mon objet ne pourra jamais être une clé dans une Map"
    Ceci dit eclipse peut mettre de lui même un final a toutes les variables locale ou non, paramètres et autres à chaque fois que c'est pertinent simplement en lui demandant de faire une mise en forme de notre code (de mémoire, Source->Clean up).
    C'est très pratique.

  18. #18
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Ex : j'ai besoin d'une zone de saisie particulière et je crée un composant qui étend JtextField.
    Pour placer une valeur par défaut j'utilise setText()
    Ensuite l'utilisateur fait sa saisie et a donc modifié le texte
    pour récupérer ce texte et le mettre dans le SGBD, j'utilise getText()

    Pourquoi et comment veut-il que je fasse une copie de mon objet ?????

    J'ai l'impression qu'on ne parle pas de la même chose.
    Tu ne peux clairement pas faire ça n'importe où. L'idée est de rendre immutables les objets qui peuvent l'être. Les éléments de l'IHM, ou dans une application de gestion les objets du domaine qui vont être modifiés par l'utilisateur, vont rester mutables. Par contre, tes éléments techniques, tes types de données... vont être aussi immutables que possible.

    Exemple : dans une application sur laquelle j'ai bossé, on a dû introduire le concept de "période" (un mois ou un trimestre donné). J'ai donc créé la classe Periode avec toutes les méthodes nécessaires. Cette classe, je l'ai rendue immutable : si tu veux changer la période, tu en créés une nouvelle. Les opérations qui permettent de récupérer la suivante, la précédente, d'avancer de X mois, etc., renvoient des nouvelles valeurs mais ne modifient pas l'instance.

    C'est exactement la logique suivie par Java lui-même sur des classes comme BigDecimal ou String. Une fois créé, tu n'y touches plus. C'est aussi un des principes fondamentaux de la programmation fonctionnelle (avec des langages comme Lisp ou Haskell, ou plus souple Ruby ou Scala).


    Citation Envoyé par JoeChip Voir le message
    Il faut aussi ne pas oublier aussi qu'on peut vouloir rigidifier le code par endroits, ou bien vouloir des performances d'accès à la donnée qui nécessitent d'éviter les cascades de get/set.
    Honnêtement, le gain de performance obtenu en accédant directement à la donnée plutôt qu'en passant par un get est très très rarement notable dans une application non triviale. Quand à côté tu as des accès BDD, des accès réseaux, etc., c'est complètement négligeable.

  19. #19
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    le gain de performance obtenu en accédant directement à la donnée plutôt qu'en passant par un get est très très rarement notable dans une application non triviale. Quand à côté tu as des accès BDD, des accès réseaux, etc., c'est complètement négligeable.
    Complètement d'accord en ce qui concerne les applications "habituelles", mais bon il peut arriver qu'on gratte tout ce qu'on peut pour améliorer les perfs, je voulais juste donner des exemples où il faut réfléchir à la pertinence des getters/setters... Il doit y en avoir d'autre, meilleurs.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

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

Discussions similaires

  1. [VB.NET] Génération automatique Property (getter / setter)
    Par Husqvarna dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/07/2020, 11h55
  2. Bonnes pratiques de protections individuelles
    Par Community Management dans le forum Sécurité
    Réponses: 22
    Dernier message: 05/04/2013, 11h47
  3. Réponses: 4
    Dernier message: 02/02/2010, 23h49
  4. configuration getter & setter
    Par otb82 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 15/10/2003, 15h53

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