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 :

[PB] Générics - cas particulier


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut [PB] Générics - cas particulier
    J'utilise beaucoup les generics, mais là je tombe sur un problème auquel je ne vois pas la solution...

    En gros, je voudrais faire une interface Stream telle que tous les sous-types de Stream (on appelera un sous-type T) implémentent l'interface Comparable, paramétrée par un supertype de T.

    C'est à dire que je voudrais par exemple avoir une classe InLiveStream qui doit implémenter "public int compareTo(K k)" où K est un super-type de InLiveStream...

    Sans doute un problème de conception de ma part... mais j'aimerai bien savoir comment obliger cela...

    Merci d'avance...

  2. #2
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    J'ai pas tout compris, mais en te faisant une suggestion peut être que tu trouveras ; tu peux peut être écrire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class <T extends InLiveStream> Stream<T> implements Comparable<T>
    Cela te convient-il ?

  3. #3
    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
    Par défaut
    Citation Envoyé par spekal
    J'ai pas tout compris, mais en te faisant une suggestion peut être que tu trouveras ; tu peux peut être écrire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class <T extends InLiveStream> Stream<T> implements Comparable<T>
    Cela te convient-il ?
    En fait j'avais fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Stream<T extends Stream> implements Comparable<T>
    En fait, ça compile et ça fait presque ce que je veux... SAUF... que je ne veux pas qu'il implémente forcément Comparable<T>, mais Comparable<? super T> (comparable d'un super type de T). Parce que par exemple j'ai une classe PlayableFile qui étend java.io.File et qui implements Stream<PlayableFile>. Et compareTo(File) est déjà défini dans File...

    Mais forcément, quand on fait implements quelque chose, il ne peut pas y avoir de wilcard (?) (c logique, mais je ne vois pas comment faire autrement)

  4. #4
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu pourrais peut-être utilisé deux types paramétrés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    interface Stream<T extends Stream, C> extends Comparable<C> {
     
        // ...
    }
     
     
    class PlayableFile extends File implements Stream<PlayableFile, File> {
     
        // ...
    }
    a++

Discussions similaires

  1. Effacer (cas particulier) d'un champ de formulaire
    Par frog43 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/05/2006, 18h29
  2. Réponses: 27
    Dernier message: 12/01/2006, 11h04
  3. cas particulier agaçant
    Par devdébuto dans le forum C
    Réponses: 17
    Dernier message: 13/12/2005, 23h45
  4. Enregistrement courant après refresh [cas particulier]
    Par say dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 15h59

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