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 :

besoin d'une information


Sujet :

avec Java

  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut besoin d'une information
    Bonjour,

    c'est quoi la différence entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set produitsupports = new HashSet();
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set produitsupports ;
    Merci

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Le premier est initialisé, l'autre non.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 693
    Par défaut
    Le premier déclare une variable pour un objet de type Set à qui on affecte un objet HashSet.

    Le second déclare juste une référence mais comme elle ne pointe sur rien, Il y aura une erreur à sa première utilisation, tant qu'on ne lui aura pas affecté un objet de type Set.

  4. #4
    Membre éclairé Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set produitsupports = new HashSet();
    Ici, non seulement tu crée ton objet, mais tu l'instancies. Par conséquent, tu vas pouvoir l'utiliser dans ton code sans voir lors de l'exécution des erreurs de type nullPointerException;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set produitsupports ;
    Ici, tu te contentes de créer ton objet, càd de lui allouer une case mémoire capable de contenir un Set sur ta machine, tous les appels à produitsupports pointeront sur cette case mémoire, mais il n'y a rien dedans. Tu indiques simplement que produitsupport est un Set, et ta machine se débrouille pour trouver une case mémoire de taille adaptée.

    Lors de l'exécution, tout appel à produitsupport renverra une erreur de type nullPointerException, à moins que tu instacies ton Set plus loin dans le code.

    Voilà ;-)

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Citation Envoyé par Balbuzard Voir le message
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set produitsupports = new HashSet();
    Ici, non seulement tu crée ton objet, mais tu l'instancies. Par conséquent, tu vas pouvoir l'utiliser dans ton code sans voir lors de l'exécution des erreurs de type nullPointerException;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set produitsupports ;
    Ici, tu te contentes de créer ton objet, càd de lui allouer une case mémoire capable de contenir un Set sur ta machine, tous les appels à produitsupports pointeront sur cette case mémoire, mais il n'y a rien dedans. Tu indiques simplement que produitsupport est un Set, et ta machine se débrouille pour trouver une case mémoire de taille adaptée.

    Lors de l'exécution, tout appel à produitsupport renverra une erreur de type nullPointerException, à moins que tu instacies ton Set plus loin dans le code.

    Voilà ;-)
    l'allocation mémoire se fait lors de l'appel du new par lors de la déclaration. Donc tant que tu n'a pas fait de new, la mémoire pour l'objet n'est pas alloué. private Set produitsupports n'est qu'une référence sur un objet de type set. S'il y avait allocation a chaque nouvelle référence déclarée, ca en ferait de la mémoire gachée avec les références multiples.

    La seule mémoire utilisée lors de la déclaration d'une référence est sur la pile pour stocker l'adresse de la référence justement.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    si tu n'instancies pas produitsupports immédiatement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private Set produitsupports ;
    ça te laisse l'opportunité de choisir une implémentation plus tard dans ton code (Design Pattern stratégie par exemple).

    Mais tu peux être sûr de l'implémentation dont tu auras besoin, auquel cas tu peux l'initialiser à la déclaration.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/10/2010, 10h19
  2. Besoin d'une formule de math
    Par AsmCode dans le forum Mathématiques
    Réponses: 29
    Dernier message: 24/08/2005, 12h31
  3. [Info]Besoin d'une information
    Par patricetoan dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/04/2005, 00h29
  4. Réponses: 5
    Dernier message: 20/11/2003, 16h36

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