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

avec Java Discussion :

Problème utilisation d'un Enum


Sujet :

avec Java

  1. #1
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut Problème utilisation d'un Enum
    Bonjour,

    je rencontre un petit soucis pour utiliser un Enum. Je souhaite créer plusieurs valeurs possible pour un paramètre dans une classe grâce à cet enum mais je ne voit pas comment l'utiliser :

    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
     
    private void setConnectionType(ConnectionType connectionType) {
    if (connectionType == ConnectionType.UNFILTERED) {
     
    } else if (connectionType == ConnectionType.HASP_HL_ONLY) {
    }
    }
    }
     
    /**
    * Connection type enum.
    *
    */
    public static enum ConnectionType {
    UNFILTERED, 
    HASP_HL_ONLY,
    LOCAL_ONLY,
    REMOTE_ONLY,
    LOCAL_HASP_HL_ONLY,
    SPECIFIED_LICENSE_MANAGER,
    SPECIFIED_HASP,
    SPECIFIED_PRODUCT


    Je voudrai pouvoir passer cet enum en paramètres mais j'ai des erreurs : "Le type public ConnectionType doit être défini dans son propre fichier"

    Si quelqu'un peut m'aider à utiliser un enum...

    merci d'avance.
    Contrec

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Contrec Voir le message
    Je voudrai pouvoir passer cet enum en paramètres mais j'ai des erreurs : "Le type public ConnectionType doit être défini dans son propre fichier"
    S'il s'agit d'une classe indépendante déclaré en public il faut qu'elle soit dans son propre fichier, comme toutes les classes public top-level.

    Sinon il faut en faire une classe interne...

    a++

    PS : Il est préférable d'utiliser un switch plutôt que des if/else

  3. #3
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Salut.

    Et bien l'erreur provient du fait que tu as visiblement déclaré ton enum en dehors de ta classe principale mais dans le même fichier or en Java on ne peux avoir qu'une seule classe publique par fichier.

    Donc plusieurs choix s'offrent à toi.

    1) Tu déclares ton enum au sein de ta classe. Par contre, ça t'oblige à préfixer par le nom de ta classe principale quand tu voudras déclarer une variable de ce type.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TaClassePrincipale.ConnectionType connectionType = TaClassePrincipale.ConnectionType.UNFILTERED;
    2) Tu enlève le modificateur public (et le static aussi accessoirement) devant la déclaration de ton enum. Du coup, la visibilité de ton enum en sera affecté puisqu'elle ne sera visible que par les classes du même package.

    3) Tu déclare ton enum au sein de son propre fichier java (en virant le static), bien entendu ce fichier devra être nommé comme ton enum.

    Edit: grillé par adiGuba.

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  4. #4
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Merci pour la réponse.

    Est-il possible d'en faire une classe interne mais de pouvoir m'en servir dans mon main ?

    En gros, j'ai une classe HaspManager dans laquelle est défini mon enum ainsi que la méthode de test de mon enum (code si-dessus) et j'ai aussi une classe Main du logiciel dans laquelle je voulait appeler ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HaspManager montTest = new HaspManager(ConnectionType.HASP_HL_ONLY);
    Tout cela sans créer d'autres classes.

    Est-il possible de faire cela, et puis-je avoir un début de piste pour réaliser ça ?

    Merci beaucoup
    Contrec

  5. #5
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par Contrec Voir le message
    Merci pour la réponse.

    Est-il possible d'en faire une classe interne mais de pouvoir m'en servir dans mon main ?

    En gros, j'ai une classe HaspManager dans laquelle est défini mon enum ainsi que la méthode de test de mon enum (code si-dessus) et j'ai aussi une classe Main du logiciel dans laquelle je voulait appeler ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HaspManager montTest = new HaspManager(ConnectionType.HASP_HL_ONLY);
    Tout cela sans créer d'autres classes.

    Est-il possible de faire cela, et puis-je avoir un début de piste pour réaliser ça ?

    Merci beaucoup
    Oui c'est possible en la déclarant public et comme je te l'ai dit en préfixant par le nom de ta classe HaspManager.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HaspManager montTest = new HaspManager(HaspManager.ConnectionType.HASP_HL_ONLY);

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  6. #6
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Je regarde tout ça et vous tiens au courant.
    Contrec

  7. #7
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Alors dans ma classe HaspManager j'ai le code suivant :

    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
     
    private void setConnectionType(ConnectionType connectionType) {
    switch (connectionType) { 
    case ConnectionType.HASP_HL_ONLY:
    // Code...
    break;
    default:
    }
    }
     
    /**
    * Connection type enum.
    *
    */
    enum ConnectionType {
    UNFILTERED, 
    HASP_HL_ONLY,
    LOCAL_ONLY,
    REMOTE_ONLY,
    LOCAL_HASP_HL_ONLY,
    SPECIFIED_LICENSE_MANAGER,
    SPECIFIED_HASP,
    SPECIFIED_PRODUCT


    Et dans ma classe Main, méthode Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HaspManager monTest = new HaspManager(
    aspManager.ConnectionType.HASP_HL_ONLY);

    Mais eclipse me sort encore une erreur au niveau de mon switch case : "La référence de la constante d'énumération
    aspManager.ConnectionType.HASP_HL_ONLY ne peut pas être définie dans un libellé 'case'"
    Contrec

  8. #8
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void setConnectionType(ConnectionType connectionType) {
    switch (connectionType) { 
    case HASP_HL_ONLY:
    // Code...
    break;
    default:
    }
    }
    Dans un switch on ne préfixe pas les valeurs possible par le nom de l'enum.

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  9. #9
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Waouh c'est super ça marche !

    Je vous remercie pour votre aide, tout à l'air de bien fonctionner.

    Bonne journée.
    Contrec

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

Discussions similaires

  1. Problème utilisation DLL
    Par Tub-95 dans le forum MFC
    Réponses: 4
    Dernier message: 02/11/2005, 12h00
  2. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  3. [JSTL] [EL] Problème utilisation <c:out>
    Par XavierL dans le forum Taglibs
    Réponses: 7
    Dernier message: 14/08/2005, 20h12
  4. (Problème) Utilisation de l'API mySQL [Delphi 2005 Perso]
    Par will-scs dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 18h26
  5. [JAR]Problème utilisation manifest et jar
    Par doudine dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/01/2005, 10h21

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