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 :

débutant: définir une classe contenant que des variables constantes


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut débutant: définir une classe contenant que des variables constantes
    Bonjour,
    comment faut il faire pour définir une classe qui contient que des variables statiques auxquelles je veux avoir accès dans le reste de mon application/package.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MesVariables 
    {
    	public static int CODE_1 = 1;
    	public static int CODE_2 = 2;
    	public static int CODE_3 = 3;	
     
    }
    ??

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par Tex-Twil
    Bonjour,
    comment faut il faire pour définir une classe qui contient que des variables statiques auxquelles je veux avoir accès dans le reste de mon application/package.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MesVariables 
    {
    	public static int CODE_1 = 1;
    	public static int CODE_2 = 2;
    	public static int CODE_3 = 3;	
     
    }
    ??
    Eh ben,
    çà marche.

  3. #3
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    oui mais je ne comprends pas pourquoi mais je suis obligé d'écrire dans mon code:
    La classe qui a besoin de ces variables est dans le même package que la classe MesVariables donc je devrait pouvoir tout simplement écrire CODE_1.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    Bonjour,

    Tu es obligé de spécifié dans quelle classe tu dois aller chercher la variable sinon il va essayer de la chercher dans la classe courante

  5. #5
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    même si je fais un import de la classe contenant ces variables avant ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    L'import sert juste à spécifier où se trouve la classe et non pas où se trouvent les variables.

    Donc tu es obligé après quand tu as besoin des variables de spécifier dans quelle classe elles sont

  7. #7
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    ok merci

  8. #8
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Tex-Twil
    même si je fais un import de la classe contenant ces variables avant ?
    Faut faire un import static:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import static lepackage.TaClasse.*;
    Sinon utilise une interface plutôt qu'une classe, les champs sont impliciment public static final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface MesConstantes {  //et non MesVariables :)
        int CODE_1 = 1;
        int CODE_2 = 2;
        int CODE_3 = 3;
    }
    Juste pour info, elle représentent quoi tes constantes (juste pour voir si une enum ne serait pas plus apporpriée) ?

  9. #9
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Une enum me parait plus adaptée qu'une classe cf [Java 5.0] Qu'est-ce qu'une enum (type énuméré) ?.

    Ensuite il est possible d'utiliser l'import static pour ne pas avoir à préciser le nom de la classe devant l'attribut (marche également pour les enums) cf [Java 5.0] Qu'est-ce que l'import static ?.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  10. #10
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Juste pour info, elle représentent quoi tes constantes (juste pour voir si une enum ne serait pas plus apporpriée) ?[/QUOTE]

    Mes constantes servent à spécifier un type de "paquet" dans un protocole de communication bluetooth.
    i.e.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CODE_MESSAGE 	    = 1;
    CODE_CONNECT	    = 2;
    CODE_DISCONNECT  = 3;	
    ...

  11. #11
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Ah bah c'est typiquement le cas où il faut utiliser des enums au lieu des constantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public enum TypePaquet { MESSAGE, CONNECT, DISCONNECT }

  12. #12
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Dans ce cas tu peux faire une enum PacketType
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public enum PacketType {
        MESSAGE, CONNECT, DISCONNECT;
    }
    ou si la valeur est importante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public enum PacketType {
        MESSAGE(1), CONNECT(2), DISCONNECT(3);
     
        private int value;
     
        private PacketType(int value) {
            this.value = value;
        }
     
        public int getValue() {
            return value;
        }
    }
    [edit] grilled [/edit]
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  13. #13
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    A noter qu'un des avantages d'une enum est de pouvoir être utilisée dans un switch .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  14. #14
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    ok merci pour ces "doubles" réponses

    Ca devrait aller maintenant.

  15. #15
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Encore une question. Est-ce correct d'ajouter une Setter à l'énumération pour pourvoir mettre à jour sa valeur à partir d'un entier:
    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
     
    public enum PacketType 
    {
        MESSAGE(1), CONNECT(2), DISCONNECT(3);
     
        private int value;
     
        private MilePacketType(int value) {
            this.value = value;
        }
     
        public int getValue() 
        {
            return value;
        }
        public void setValue(int value)
        {
        	this.value = value;
        }
    }

  16. #16
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Tex-Twil
    Encore une question. Est-ce correct d'ajouter une Setter à l'énumération pour pourvoir mettre à jour sa valeur à partir d'un entier:
    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
     
    public enum PacketType 
    {
        MESSAGE(1), CONNECT(2), DISCONNECT(3);
     
        private int value;
     
        private MilePacketType(int value) {
            this.value = value;
        }
     
        public int getValue() 
        {
            return value;
        }
        public void setValue(int value)
        {
        	this.value = value;
        }
    }
    Non (pas trop). Pourquoi voudrais-tu modifier la valeur?

    (ps: tu peux virer le "private" sur le constructeur, c'est implicite)

  17. #17
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Une fonction que je ne peux (veux) pas modifier me renvoie un entier pour me dire quel genre de paquet j'ai reçu.

    Dans ce que je programme je voudrais utiliser l'énumération, plus parlante, et je veux donc à partir de l'entier créer un PacketType.

  18. #18
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Tex-Twil
    Une fonction que je ne peux (veux) pas modifier me renvoie un entier pour me dire quel genre de paquet j'ai reçu.

    Dans ce que je programme je voudrais utiliser l'énumération, plus parlante, et je veux donc à partir de l'entier créer un PacketType.
    OK donc ça n'est surtout pas un setter qu'il te faut...

    Soit une méthode static dans ton enum qui te renvoie le bon type de paquet à partir du paramètre (la méthode PaquetType.values() pourra t'aider, ça renvoie toutes tes valeur d'enum).

  19. #19
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Il ne faut pas modifier la valeur associer à un membre car tu pers le principe de "constante".

    Tu peux par contre rajouter une méthode statique à ton enum qui renvoie le membre en fonction de la valeur
    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
    public static PacketType valueOf(int value) {
        switch(value) {
            case 1 : {
                return MESSAGE;
            }
            case 2 : {
                return CONNECT;
            }
            case 3 : {
                return DISCONNECT;
            }
            default : {
                return null;
            }
        }
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  20. #20
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    ok merci. C'est la vrai compète entre vous deux

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

Discussions similaires

  1. Ajout d'une colonne contenant que des 1
    Par lileric dans le forum MATLAB
    Réponses: 1
    Dernier message: 06/05/2011, 17h09
  2. Réponses: 4
    Dernier message: 26/01/2009, 13h37
  3. Réponses: 3
    Dernier message: 09/07/2007, 12h44
  4. Réponses: 7
    Dernier message: 01/09/2006, 14h19
  5. Réponses: 20
    Dernier message: 07/12/2005, 15h32

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