Forum Programmation.java Enumérateurs, Tableaux constants

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
jan.
2005
salut les gens...

Petit problème pour un débutant en java :

Je souhaite remplir statiquement un tableau de constante. En pseudo syntaxe je veux faire

String Mois[12] = ("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");


Comment ça s'écrit en Java ?

'ci !
  • # On est pas loin de la pseudo syntaxe

    Posté par  . Évalué à 3.

    String Mois[] = {"Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"};

    Pierre
  • # plus compliqué mais en mieux

    Posté par  (site web personnel) . Évalué à 4.

    public class Mois {

    private string nom;

    private Mois(string nom){
    this.nom = nom;
    }

    public static Mois Janvier = new Mois("Janvier");
    public static Mois Fevrier = new Mois("Février");
    public static Mois Mars = new Mois("Mars");
    public static Mois Avril = new Mois("Avril");
    ...

    public void toString(){
    return nom;
    }
    }


    celà te permet de pouvoir faire des comparaisons, par exemple :

    Mois m1 = Mois.Janvier;
    Mois m2 = Mois.Janvier;
    System.out.println(m1 + " == "+ m2 + " : "+ (m1 == m2));

    sinon regarde du côté de la doc de java 1.5 avec l'apparition du type enum.
    • [^] # Re: plus compliqué mais en mieux

      Posté par  . Évalué à 2.

      Petite question : ca ne marchait pas dans le version du commentaire au dessus ?

      String m1 = Mois[1];
      String m2 = Mois[1];
      System.out.println(m1 + " == "+ m2 + " : "+ (m1 == m2));

      m1 et m2 sont bien des références à la même instance ?
      • [^] # Re: plus compliqué mais en mieux

        Posté par  (site web personnel) . Évalué à 1.

        si, ça marche, mais bon, question reutilisabilité, c'est pas top.

        Imagine qu'on décide le créer un nouveau mois, et le le coller entre janvier et fevrier. Bam, plein de code partout a changer dans l'appli.
        C'est a rapprocher de "type safe enum"
        http://www.javacamp.org/designPattern/enum.html(...)
        ou chapitre 21 dans "Effective Java Programming Language Guide."
      • [^] # Re: plus compliqué mais en mieux

        Posté par  (site web personnel) . Évalué à 3.

        Si si ça marche parcque tu es dans un cas particulier où Java autorise la comparaison de chaîne de caractère avec le signe ==. L'avantage de ma solution c'est que les constantes sont vraiment typées, (c'est le type Mois, alors que dans le commentiare précédent c'est le type string), et sont limités : j'impose qu'il y est 12 constantes (avec des strings ont pourrait imaginer metttre n'importe quoi dedans).
        De plus ma solution permet égalemetn d'enregistrer d'autres informations sur le type et on peut ajouter des méthodes qui vont bien.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.