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 :

Réponse douteuse d'une question de la certification Java Oracle


Sujet :

avec Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut Réponse douteuse d'une question de la certification Java Oracle
    Bonjour, j'ai une question d'un guide de préparation à la certification oracle qui est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Etant donné la méthode suivante
     
    public static <E extends Number> List<? super E> process(List<E> nums)
     
    un programmeur veut utiliser la méthode de la façon suivante
     
    List<Number> input = ...;
    List<Number> output = null;
    output = process(input);
     
    est-ce que ça compile ?
    La réponse donné est que ca compile et je pense que c'est pas juste. En effet <E extends Number> ne peut pas s'appliquer pour E=Number

    Pouvez vous me dire si ca compile ? Merci

  2. #2
    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
    Marrant.

    Alors non, ça ne compile pas, donc manifestement la réponse fournie est fausse.

    Mais rien à voir avec le <E extends Number>. Il s'applique bel et bien dans le cas où E serait Number lui-même. Ça ne sert à rien d'exiger une extension stricte, ça nous dit rien de plus. <T extends Bidule> indique que T doit être un sous-type de Bidule ou Bidule lui-même. En gros, qu'avec un T, on peut faire tout ce qu'on pourrait faire avec un Bidule.

    Non, si ça compile pas, c'est parce que List<? super E> c'est pas la même chose que List<E>.

    Du coup, en appelant cette méthode avec en paramètre une List<Number>, on force le fait que le paramètre générique de la méthode est E = Number, ce qui fait que le type renvoyé, List<? super E>, sera résolu en type List<? super Number>.

    Et on ne peut pas assigner ce List<? super Number> à une variable de type List<Number>.

    Voilà voilà voilà.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut
    Merci thelvin

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

Discussions similaires

  1. Question sur la connection JAVA Oracle
    Par Invité dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 17/07/2013, 21h47
  2. [Java] Question sur les certifications Java
    Par programmeur400 dans le forum Certifications
    Réponses: 7
    Dernier message: 05/07/2011, 09h36
  3. [Java] Diverses questions sur la certification Java
    Par dingoth dans le forum Certifications
    Réponses: 1
    Dernier message: 03/11/2008, 20h53
  4. Question pour la certification Java
    Par siimpatiico dans le forum Langage
    Réponses: 1
    Dernier message: 16/03/2008, 18h39

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