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 :

[jdk5] les enums


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 42
    Points : 39
    Points
    39
    Par défaut [jdk5] les enums
    Bonjour,
    Je pensais betement que les Enums se comportaient comme des classes ...

    Comment est-ce possible ?
    Comment ça marche ?

    Pourquoi mon champ 'myvalue' est il visible?
    (alors que TTT.aaaa ne l'est pas !!)

    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 class Test {	
    	private class TTT {
    		private int aaaa = -1;
    	}
     
        private enum MYENUM  { 
            ELT1(11), ELT2(22), ELT3(33);
            private int myvalue;
            private MYENUM(int s) { myvalue = s; }
            // private void setMyvalue(int i) {}
        }
     
    	public static void main(String[] args) {
    		System.out.println(MYENUM.ELT1.myvalue);  // affiche 11
    		MYENUM.ELT1.myvalue = 777; // ASSIGNABLE
    		System.out.println(MYENUM.ELT1.myvalue);  // affiche 777
    	}
     
    }
    J'ai tout d'abord supposé qu'il y avait des getter / setter par default mais en fait non car quand je decommente la ligne suivante, rien ne change (elle override rien du tout)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private void setMyvalue(int i) {}
    Bien entendu si je ne pveux pas qu'elle soit modifiée, il suffit que je mette final devant ma propriété, mais cela ne m'explique pas le fonctionnement de ce même champ PRIVE!

    Si vous avez des elements de reponses ...
    Merci d'avance..

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    TTT.aaaa est parfaitement visible. Ton probleme vient du fait que TTT n'est pas static, donc inutilisable depuis le contexte static de la methode main. De maniere generale, tous les elements d'une classe interne (prives, proteges, package private et publics) sont visibles par la classe englobantes dans un contexte compatible. Par exemple si la classe interne est static, les champs sont tout le temps visibles par la classe englobante. Si la classe interne n'est pas static alors ses champs ne sont visibles que depuis une instance de la classe englobante.

    Bref, rajoute static dans private class TTT et reessaye, tu verras que ca marche parfaitement.

    Enfin tu peux modifier les valeurs de ton enum car tu es dans la classe englobante qui a acces aux champs prives des classes internes.
    Romain Guy
    Android - Mon livre - Mon blog

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 42
    Points : 39
    Points
    39
    Par défaut
    En effet, c'est finalement logique, merci pour l'explication.

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

Discussions similaires

  1. s:if test tag et les enums
    Par lilking dans le forum Struts 2
    Réponses: 3
    Dernier message: 15/02/2010, 11h58
  2. Réponses: 10
    Dernier message: 28/08/2009, 11h21
  3. Réponses: 2
    Dernier message: 25/10/2007, 13h56
  4. probléme avec les enum
    Par amazircool dans le forum Langage
    Réponses: 5
    Dernier message: 28/09/2007, 13h53
  5. Les enum en java
    Par andromeda dans le forum Langage
    Réponses: 9
    Dernier message: 31/07/2007, 16h16

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