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 :

Les attributs en Java


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut Les attributs en Java
    Salut! je voulais savoir s'il y a une méthode pour accéder à des attributs privés d'une Classe à partir d'une autre (qui à le droit d'accédé coté conception) sans changer le Private en Public ?

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    normalement si l'attribut est private, c'est précisément pour interdire à une autre classe d'y accéder directement. En général une classe qui veut mettre à disposition ses attributs le fera via des getters/setters, ce qui lui permet de garder un peu de contrôle sur la vie de la variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //le champ toto est private
    private String toto;
     
    //La méthode getToto renvoie la valeur de toto et est publique
    public String getToto(){
     return toto;
    }
    Si ton champ est private et que tu dois y accéder directement, c'est qu'il y a un problème de conception.



    Ca c'était la version politiquement correcte.
    Maintenant la version mains dans le cambouis. Je précise pour ma conscience que si tu dois faire ça dans une véritable application c'est très probablement une mauvaise idée puisqu'en utilisant l'api REFLECT tu fais sauter tous les mécanismes du langage java qui permettent d'assurer un code robuste et maintenable:

    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
    20
    21
    22
    23
     
    import java.io.IOException;
    import java.lang.reflect.Field;
    import java.text.ParseException;
     
    public class Test
    {
     
     
    	public static void main(String[] args) throws IOException, ParseException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
    		TestBis t = new TestBis();
    		Field f = TestBis.class.getDeclaredField("str"); //Récupère la définition du champ str
    		f.setAccessible(true); // Fait sauter la protection du champ
    		String value = (String) f.get(t); //Récupère la valeur du champ str pour l'instance t
    		System.out.println(value);
    	}
     
    }
     
    class TestBis{
    	private String str = "yop";
     
    }
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Jidefix Voir le message
    Maintenant la version mains dans le cambouis. Je précise pour ma conscience que si tu dois faire ça dans une véritable application c'est très probablement une mauvaise idée puisqu'en utilisant l'api REFLECT tu fais sauter tous les mécanismes du langage java qui permettent d'assurer un code robuste et maintenable
    J'ajouterais pour appuyer nouvelle fois que la première partie du post devrait suffire à la résolution de ton soucis mohsenuss91. Si tu dois utiliser ceci, c'est très certainement une mauvaise idée.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    Merci a vous

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

Discussions similaires

  1. recupérer les attribut d'une classe java
    Par abdoutleti dans le forum Général Java
    Réponses: 2
    Dernier message: 09/03/2011, 17h20
  2. [DOM] Question concernant dom et les attributs avec java
    Par zemzoum89 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/09/2010, 21h18
  3. changer les attributs d'un objet depuis java
    Par pimousse_cerise dans le forum JSF
    Réponses: 1
    Dernier message: 03/11/2009, 00h51
  4. Les view buffers java.nio et l'attribut position
    Par GnuVince dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 30/03/2009, 18h05
  5. Réponses: 4
    Dernier message: 25/07/2006, 12h10

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