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

Java Discussion :

comparaison de valeurs ou de références d'objets


Sujet :

Java

  1. #1
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut comparaison de valeurs ou de références d'objets
    Bonjour, j'ai une interrogation sur la comparaison de références d'objets ou de propriétés d'objets.

    Sur une fenêtre, j'ai un composant qui permet d'afficher et de positionner tout un lot de composants divers. Ce composant nommé "g1" est en fond gris sur l'image :
    Nom : interface 02 02 2022.png
Affichages : 339
Taille : 13,5 Ko


    Je souhaite recalculer la position des différents éléments sur la grille, uniquement si cette dernière a été redimensionnée.

    A l'entrée du "paintComponent" de mon composant support "g1", je teste si ce dernier a changé de dimension :
    Si ce n'est pas le cas, je redessine directement tous mes objets contenus à leur place initiale.
    Si c'est le cas, j'appelle la méthode "actualiser()" pour tout recalculer, et je redessine seulement ensuite.

    J'ai trois variables pour faire ce test :
    g1sizeX : integer largeur de mon composant g1 à la dernière actualisation.
    g1SizeY : integer hauteur de mon composant g1 à la dernière actualisation.
    g1Size : objet Dimension de mon composant g1.

    Si je fais le test en vérifiant si largeur ou hauteur a changé, cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (this.getWidth() != g1SizeX || this.getHeight() != g1SizeY) {
    			System.out.println("le test donne DIFFERENT et on appelle ACTUALISER()");
    			actualiser();	// redimensionner uniquement si la taille de la grille à changée
    		}

    Cependant si je veux faire le test en une fois, avec l'objet dimension, cela ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //		if (this.getSize() != g1Size) {
    //			System.out.println("le test donne DIFFERENT et on appelle ACTUALISER()");
    //			actualiser();	// redimensionner uniquement si la taille de la grille à changée
    //		}

    Mes questions sont les suivantes :

    1/ la comparaison d'objets, d'après ce que j'ai lu, compare en fait les pointeurs, et si c'est les mêmes, la comparaison est ok. Dans le cas, cela expliquerait que mon test dimension ne fonctionne pas.
    Est-ce bien la raison??

    2/ Puis-je tout de même faire une comparaison de dimension "en une fois", par une astuce que j'ignore, sans être bloqué par la comparaison de références d'objets??

    Merci à tous si vous vous y connaissez...

  2. #2
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut trouvé!
    pour info, j'ai trouvé :

    en fait quand on traite des objets, le "==" compare bien les références des deux objets pour le test. Si c'est la même référence, c'est donc logiquement le même objet.

    Quand on veut comparer que toutes les valeurs d'un objet1 sont égales aux valeurs d'un objet2, on passe alors par la méthode "equals".

    Pour ma part, il me fallait vérifier que les deux objets avaient des valeurs différentes et donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!this.getSize().equals(g1Size)) {
    			System.out.println("le test donne DIFFERENT et on appelle ACTUALISER()");
    			actualiser();	// redimensionner uniquement si la taille de la grille à changée
    		}
    Ca marche et c'est donc ok.

    Merci à moi donc, et peut-être une info pour d'autres....

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

Discussions similaires

  1. Manipuler objet par valeur et par référence
    Par scar63 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 23/04/2012, 00h41
  2. Passer un objet par valeur et non référence
    Par Pynouz dans le forum C#
    Réponses: 2
    Dernier message: 14/01/2011, 09h42
  3. [WD15] Valeur faisant référence à un objet
    Par Pascal26120 dans le forum WinDev
    Réponses: 0
    Dernier message: 27/04/2010, 13h08
  4. [XL-97] Comparaison de valeur par rapport à une référence et insertion d'un statut OK ou NOK
    Par Kartoon67 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/05/2009, 09h22
  5. Repérer les comparaisons de références d'objet
    Par coolcool29 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 23/06/2008, 11h12

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