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 :

Affectation d'une reference à un objet


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2006
    Messages : 194
    Points : 69
    Points
    69
    Par défaut Affectation d'une reference à un objet
    Bonjour tous le monde,
    Est ce que l'instruction suivant est juste ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyObjet obj = null;
    obj = methodeA();
    Sachant que le code de la methodeA() est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public MyObjet methodeA(){
    MyObjet obj = new MyObjet () ;
    obj.setA("A");
    obj.setB("B");
    return obj;
     
    }
    Est ce que ces instructions vont levé un exception de type NullPointerException ???
    Merci

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Pourquoi tu n'essaies pas tout simplement?

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2006
    Messages : 194
    Points : 69
    Points
    69
    Par défaut
    Je voulai en générale comment je devrai traiter ce type d'affectation, j'entends parlé souvent passage de prametre par valeur et par reference, je voulais me renseigné comment ca devrai se passer dans java.
    Merci de m'eclairer ses choses.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Points : 151
    Points
    151
    Par défaut
    Sois gentil ,
    testes d'abord ton code .

  5. #5
    Membre averti Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Points : 352
    Points
    352
    Par défaut
    Pour le passage de paramètres:
    en Java les primitives sont passées par valeur et les objets par référence.
    Pour ce qui est des exceptions qui pourraient être levées, lorsque tu veux savoir le résultat d'un code source, il n' existe pas de meilleur moyen que de le compiler (dans le cas de java) et de l'exécuter:

    javac MyObject.java
    java MyObject

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par welcome_59 Voir le message
    Pour le passage de paramètres:
    en Java les primitives sont passées par valeur et les objets par référence.
    En vérité en java tous les paramètres sont passés par valeur.
    Precisement en ce qui concerne donc un objet, c'est ça réference qui est passée par valeur.C'est donc par abus de langage que l'on dit que les objets sont passés par référence.
    @++

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par kossistus Voir le message
    En vérité en java tous les paramètres sont passés par valeur.
    Precisement en ce qui concerne donc un objet, c'est ça réference qui est passée par valeur.C'est donc par abus de langage que l'on dit que les objets sont passés par référence.
    @++
    C'est précisément la définition d'un passage par référence : la référence est passée par valeur... Sinon que voudrait dire passage par référence?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par ®om Voir le message
    C'est précisément la définition d'un passage par référence : la référence est passée par valeur... Sinon que voudrait dire passage par référence?
    Je suis ok
    La problème est que cela prêtre à confusion si on ne dit pas clairement les choses.
    En java le passage par valeur est uniquement reservé aux types élementaires et la valeur de la reférence aux objets. Ce qui veut dire que aucune variable ne peut être passée comme paramètre à la fois d'entrée et de sortie comme dans un langage alogorithmique tel pascal( ce qui peut être vraiment pratique).

    Par ailleurs un langage comme c# permet de passer tous les types par references (en specifiant le mot clé ref) d'une part et d'autre part , part défaut les types elementaires et les objets sont passés par valeur.
    Et donc cela peut prêter à confusion.

  9. #9
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Par contre, pour les types élémentaires, il est possible de simuler un passage par références (comme en C ou en pascal), en utilisant les classes d'objet homonymes aux types élémentaires (ex: type élémentaire byte / classe Byte, ...)

    mais le code devient très vite lourd ...

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par yjuliet Voir le message
    il est possible de simuler un passage par références
    Ce n'est pas vraiment un passage par référence...

    En Java TOUT est passé par copie de la valeur, que ce soit les types primitifs ou les objets (dans ce cas c'est la valeur de la référence qui est copié).

    Par exemple si on a une méthode comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void method(Integer arg) {
         arg = new Integer(1);
    }
    Et que l'on utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Integer i = new Integer(0);
    method(i);
    System.out.println(i); // Affiche 0 -> i n'a pas été modifié
    La référence i n'a pas été modifié par l'appel de la méthode, même si cette dernière modifie son paramètre. Or si on avait un passage par référence (tel que le & du C++), la modification au sein de la méthode se serait répercuté dans le code ci dessus...


    a++

  11. #11
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void method(Integer arg) {
         arg = new Integer(1);
    }
    Et que l'on utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Integer i = new Integer(0);
    method(i);
    System.out.println(i); // Affiche 0 -> i n'a pas été modifié
    La référence i n'a pas été modifié par l'appel de la méthode, même si cette dernière modifie son paramètre. Or si on avait un passage par référence (tel que le & du C++), la modification au sein de la méthode se serait répercuté dans le code ci dessus...


    a++
    En plus les classes Wrapper sont inaltérables donc on est d'autant plus coincé vu qu'il n'y a pas possibilité de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void method(Integer arg) {
         arg.setValue(1); //ne marche pas
    }
    Donc non, comme l'a dit adiGuba il n'est pas possible de simuler un passage par référence des type élémentaires en passant par les classes Wrapper.

Discussions similaires

  1. Réponses: 15
    Dernier message: 12/05/2011, 16h52
  2. affectation d'une valeur a un objet Integer
    Par inter_amine dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 17/10/2006, 17h16
  3. impossible d'affecter une valeur à un objet
    Par Dafbau dans le forum Access
    Réponses: 2
    Dernier message: 22/09/2006, 10h48
  4. [POO] affectation dynamique d'une méthode à un objet
    Par Delphi-ne dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 21h17
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55

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