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 :

Générique et interface


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut Générique et interface
    Bonsoir,

    J'ai un petit doute sur l'utilisation des génériques et des interfaces...

    Je voulais faire quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Stock<Data> x = new Stock<Genre>();
    Genre implémentant Data...

    Comme il est possible de faire :

    Je pensais qu'il était possible de faire de même avec les génériques, mais ca n'a pas l'air d'être le cas

    Quelqu'un a une explication et/ou une solution ?

    Merci d'avance

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Stock<? extends Data> x = new Stock<Genre>();

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par ®om
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Stock<? extends Data> x = new Stock<Genre>();
    Le problème c'est que j'implémente Data et n'en hérite pas, ca change quelque chose ?

    De plus, si je fais comme ca, est que j'aurais quand même les avantages de la généricité ou devrais-je m'amuser à tout caster ?

    Merci

  4. #4
    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 wichtounet
    Le problème c'est que j'implémente Data et n'en hérite pas, ca change quelque chose ?

    De plus, si je fais comme ca, est que j'aurais quand même les avantages de la généricité ou devrais-je m'amuser à tout caster ?

    Merci
    Non tu devras t'amuser à tout caster...

    Mais bon si tu veux un stock de genre, tu fais Stock<Genre>

    C'est le même problème que List<Integer> ça n'hérite pas de List<Number>.
    En revanche, cela n'empêche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<Number> numbers = new ArrayList<Number>();
    numbers.add(5); // ou .add(new Integer(5));

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par ®om
    Non tu devras t'amuser à tout caster...

    Mais bon si tu veux un stock de genre, tu fais Stock<Genre>

    C'est le même problème que List<Integer> ça n'hérite pas de List<Number>.
    En revanche, cela n'empêche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<Number> numbers = new ArrayList<Number>();
    numbers.add(5); // ou .add(new Integer(5));
    Le problème, c'est que ma fonction devrait être générique...

    Et donc, la création de la variable se fera à l'intérieur d'un switch et j'en ai besoin après le Switch... Je ne peut donc pas savoir à l'avance de quelle classe sera remplie ma classe Stock, mais bon, s'il faut tout caster, je casterai le tout

  6. #6
    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 wichtounet
    Le problème, c'est que ma fonction devrait être générique...

    Et donc, la création de la variable se fera à l'intérieur d'un switch et j'en ai besoin après le Switch... Je ne peut donc pas savoir à l'avance de quelle classe sera remplie ma classe Stock, mais bon, s'il faut tout caster, je casterai le tout
    Peux-tu montrer un bout de code (ou expliquer pourquoi tu as besoin de savoir que c'est un Genre et non Data uniquement)?

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

Discussions similaires

  1. C# => VB.net classe, interface générique
    Par Gr@nd@x dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/10/2008, 13h27
  2. Interfaces et contraintes génériques
    Par SaumonAgile dans le forum C#
    Réponses: 6
    Dernier message: 18/04/2008, 16h14
  3. Implémentation d'interface et génériques
    Par jsebfranck dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2007, 12h54
  4. Réponses: 3
    Dernier message: 11/05/2007, 17h29
  5. Réponses: 5
    Dernier message: 23/02/2006, 00h34

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