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

Java Discussion :

Enum et interface


Sujet :

Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut Enum et interface
    Bonjour,

    J'ai une méthode qui ne prend en paramètre que des <C extends Enum<C>>. Cette méthode je ne peux pas la modifier.

    D'autres part j'ai plusieurs Enum que je voudrais généraliser. Appelons ces enums E1 et E2.

    Dans un premier temps j'ai choisi de mettre une interface sur E1 et E2 mais du coup je ne peux plus appeler ma méthode car l'interface ne fais pas passer l'information comme quoi ce sont des enums derrière.

    J'ai alors voulu transformer mon interface en classe abstraite héritant de Enum<C>. Mais la nouveau problème, les enums ne peuvent pas hériter d'autre classe et donc de ma classe abstraite.

    Coment faire ? Petite précision je suis en Java 6.

    Merci.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Tu as quelques petit morceau de code qui nous permettrais de "tester" un peu et de mieux comprendre ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut
    Ok j'ai fais un exemple

    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
    41
    42
    43
    44
    public class Test {
     
      public interface I1 {
     
      }
     
      // Ca j'ai pas le droit
      // The type A1 may not subclass Enum explicitly
      public abstract class A1 extends Enum {
     
      }
     
      public interface I2<C extends Enum<C>> {
     
      }
     
      public enum E1 implements I1 {
        TOTO
      }
     
      public enum E2 implements I2 {
        TOTO
      }
     
      public enum E3
     
      public void callWithEnum(Enum<?> enume) {
     
      }
     
      public void test() {
        callWithEnum(E1.TOTO); // Ca j'ai le droit
      }
     
      public void callWithInterface(I1 i1, I2 i2) {
        // Ca j'ai pas le droit parce que mon interface 
        // ne dis pas que ce sont des enums derriere
        // The method callWithEnum(Enum<?>) in the type Test is not 
        // applicable for the arguments (Test.I1)
        callWithEnum(i1);
        // Idem
        callWithEnum(i2);
      }
    }
    Fonctionnellement je veux faire ce qu'il y a dans callWithInterface, c'est-à-dire pouvoir appeler ma méthode callWithEnum avec en paramètre un supertype commun à E1 et E2.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut
    Est-ce qu'il y a un moyen en Java de dire que mon interface ne peux être implémentée que par des sous-classes de Enum<C> ?

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    non, une interface n'a pas à se mêler de ça.

    Ce que tu peux faire, c'est rendre callWithInterface() générique avec contraintes multiples, comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      public <T1 extends Enum<T1> & I1, T2 extends Enum<T2> & I2> void callWithInterface(T1 i1, T2 i2) {
        callWithEnum(i1);
        callWithEnum(i2);
      }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut
    Super, je ne connaissais pas ces contraintes multiples. Je te remercie.

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

Discussions similaires

  1. class, interface, or enum expected
    Par abdelilah dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 12/02/2010, 14h46
  2. erreur:class,interface,or enum expected
    Par siham-gh dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 25/12/2009, 19h41
  3. [preferences] nommage class, interface, enum
    Par visiwi dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 29/08/2008, 15h19
  4. probléme avec interface enum
    Par amazircool dans le forum Langage
    Réponses: 4
    Dernier message: 28/04/2007, 16h47
  5. Enum & interface ?
    Par psedo dans le forum C#
    Réponses: 4
    Dernier message: 24/03/2007, 16h45

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