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 :

Difference entre ces 2 manieres d'instancier.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut Difference entre ces 2 manieres d'instancier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // declaration de la classe Operation
    private Operation operation;
    // version 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void executionToto() {
    	Operation operation = new Operation;
    }
    // version2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    public void executionToto2() {
    	 operation = new Operation;
    }
     
     
    public getOperation(){
    	return Operation;
    }


    Dans une classe java differente : je fais appel à XX.getOperation();


    ca marche dans le cas ou j'appelle la methode executionToto2 et dans le cas executionToto : j'ai un nullPointerException;
    je ne comprends pas non plus, la classe Operation est declarée "private" et je veux acceder à cette classe par un Get...qui lui est public.
    Donc pourriez vous m'eclairer sur cette manière de codage.


    Dans le cas ou j'execute executionToto(), je crée une nouvelle instance de cette classe donc mon getOperation est null? exact?
    merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void executionToto() {  
    Operation operation = new Operation; 
    }
    La variable locale masque l'attribut operation de ta classe.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut
    donc la meilleure chose à faire est ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // declaration de la classe Operation
    private Operation operation;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void executionToto2() {
    	 operation = new Operation;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public getOperation(){
    	return Operation;
    }

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Oui avec les () pour le new, le type de retour pour le get et le nom de l'attribut et non de la classe dans le get ...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut oui fautes
    oui oui desolé.

    public getOperation(){ return operation; }
    merci bien.

  6. #6
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    ah oui j'avais pas vu cette faute, ce n'est pas
    public getOperation(){
    return Operation;
    }
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Operation getOperation(){
     return operation;
    }

  7. #7
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    public void executionToto() {
     Operation operation = new Operation(); 
    }
    Dans ce cas, ta methode ne renvoi rien. Tu créés une instance d'une classe qui pourra etre utilisée durant toute la vie de la fonction executionToto(). Dans cette methode donc tu créés une instance de Operation que tu enregistres dans une variable locale nommé operation (PS: ton nullPointerException doit venir du fait qu'il y a un conflit de nommage car lors de la compilation, il trouve 2 variables qui pour le compilateur sont différentes mais qui ont le meme nom).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // declaration de la classe Operation
    private Operation operation;
    
    public void executionToto2() {
     operation = new Operation();
    }
    
    public getOperation(){
     return Operation;
    }
    Dans ce cas, tu créés une variable globale qui s'appelle operation, elle a une durée de vie equivalente à celle de l'instance de la classe qui la contient. Ici, si tu ne passe pas par la fonction executionToto2(), getOperation() renverra null car c'est la valeur par défaut que prendra ta variable globale tant que tu ne l'instancieras pas.

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

Discussions similaires

  1. Difference entre ces 3 notations
    Par alcofribas dans le forum Débuter
    Réponses: 11
    Dernier message: 29/09/2009, 16h17
  2. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  3. Réponses: 4
    Dernier message: 27/07/2007, 16h39
  4. [] Difference entre MSHFlexGrid et MSFlexGrid
    Par olivierx dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/04/2003, 08h48
  5. Difference entre types d'Adresse IP
    Par freud dans le forum Développement
    Réponses: 3
    Dernier message: 02/03/2003, 02h06

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