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 :

Initialisation de membre finaux dans le bon sens ?


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Points : 437
    Points
    437
    Par défaut Initialisation de membre finaux dans le bon sens ?
    Bien le bonjour le forum !

    j'ai une question super importante pour mon projet et pour moi même :

    j'ai du pour mon projet récupérer du très vieux code (datant de java 1.2) qui me pose de gros problèmes :

    en effet ce code génère très vite des erreurs à l'execution, et certaines erreurs je ne sais pas trop comment bien les corriger, en effet voici un code super réduit :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    public class Plop extends JPanel
    {
        private final Fills _fills = new Fills();
        private final Colors _colors = new Colors();
     
        public Plop()
        {
            ...
        }
     
        public void uneMethod()
        {
            _colors.autreMethode();
        }
     
        private final class Colors
        {
            private boolean att = false;
     
            Colors()
            {
                ...
            }
     
            public void autreMethode()
            {
                ...
            }
        }
     
     
        private final class Fills
        {
            private Toto _info	= Toto(_colors.att);
     
            Fills()
            {
            }
        }
    }
    Vous remarquerez très vite que ce code à l'execution génère une NullPointerException sur la ligne qui permet d'initialiser Toto en utilisant _colors, en effet à ce moment, le code n'est qu'à la première ligne du code, et donc _colors n'est pas encore initilalisé

    Je sais comment corriger ce code vite fait, il suffit d'intervertir les deux lignes d'init (ainsi _color est initialisé avant _fills) mais si pour une raison ou une autre on venait à réintervertir les lignes, on retombe dans le même problème.

    Comment faudrait-il faire pour recoder cette classe de manière propre ?

    Avec des init à null et toutes les init dans le constructeur ?

    Autrement ?

    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 561
    Points : 21 624
    Points
    21 624
    Par défaut
    La solution la plus adaptée à mon avis, est de modifier le constructeur de Fills pour qu'il prenne un Colors en paramètre, et qu'il se serve de ça plutôt que de l'attribut Colors de la classe.

    Comme ça, il est "impossible" d'appeler le constructeur de Fills avant d'avoir un Colors à lui donner.

  3. #3
    Membre averti Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Points : 437
    Points
    437
    Par défaut
    OK, donc c'est bien du recodage plus ou moins complet des différents constructeurs (parceque là j'ai donné qu'un exemple avec 2 classes internes, mais il y en a une bonne dixaine).


    Merci.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/11/2010, 11h38
  2. parentNode sur des liens, n'a pas l'air de fonctionner dans le bon sens ;)
    Par nicko_73 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/10/2009, 10h47
  3. Besoin de confirmation pour partir dans le bon sens.
    Par ventrebleu dans le forum Projets
    Réponses: 3
    Dernier message: 21/11/2007, 18h45
  4. Réponses: 2
    Dernier message: 08/09/2007, 22h33
  5. [ALGO] dessiner un triangle dans le bon sens
    Par lefait dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 05/02/2005, 14h38

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