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 :

Generics et compatibilité ascendante


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut Generics et compatibilité ascendante
    J'ai un problème avec une des nouveautés du JDK 5.0, à savoir les Generics. J'utilise un outil pour générer une partie de mon code à partir de mon modèle UML (AndroMDA rulz !) mais il ne génère que du code compatible 1.4 dans un souci de compatibilité ascendante. Autrement dit, il n'utilise pas certaines joyeusetés de Tiger, et notamment les Generics.

    Mais moi dans mon application, dans le code que j'écris moi-même avec mes petits doigts boudinés, je sais que la JVM en-dessous ça sera la 1.5, donc je peux utiliser les Generics.

    Le petit souci, c'est de savoir comment faire cohabiter les deux : par exemple, je récupère dans une partie générée, donc 1.4, une Collection toute simple, mais je sais que dedans, les Objects en fait ce sont des instances de la classe A. Est-ce que je peux tout simplement faire une affectation comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Collection<A> as = getSimpleCollection();
    sachant que getSimpleCollection() me retourne une Collection et non une Collection<A> ?

  2. #2
    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 Re: Generics et compatibilité ascendante
    Salut,


    Les Generics ont été concus pour assurer une compatibilité ascendante. Contrairement aux templates du C++, les classes Collection<String> et Collection<Integer> sont exactement les mêmes (getClass() retrounera "Collection" dans les deux cas) puisque le type paramétré est perdu à l'exécution...

    En effet avec les Générics, la vérification des types est effectué à la compilation et non pas à l'exécution. Cela a permis d'utiliser les generics dans des classes existantes sans casser la compatibilité ascendante.


    Citation Envoyé par rozwel
    sachant que getSimpleCollection() me retourne une Collection et non une Collection<A> ?
    Tu peux très bien le faire, mais tu auras un warning à la compilation pour te prévenir que le compilateur ne peut plus assurer la cohérence des types, et que tu peux potentiellement obtenir des erreurs (par exemple si la méthode getSimpleCollection() a ajoutée des objet qui ne sont pas du type de A)...

    Mais si tu es sûr de toi rien ne te l'interdit, et tu peux te passer du warning en utilisant l'annotation @SuppressWarnings("unchecked") devant la signature de ta méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @SuppressWarnings("unchecked")
    public Collection<A> getCollectionA () {
    	return object.getSimpleCollection(); // warning unckeked
    }
    Par contre cette annotation n'est géré que depuis l'update 6 du JDK...

    a++

  3. #3
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Ca c'est de la réponse claire et limpide !!! Merci beaucoup.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 19/06/2015, 18h28
  2. Compatibilité ascendante avec du DCOM et du .net 1,x
    Par jerome@onplonge dans le forum Framework .NET
    Réponses: 0
    Dernier message: 14/01/2011, 15h57
  3. *.xml: compatibilité ascendante XL2003 -> XL2007
    Par didier.cabale dans le forum Excel
    Réponses: 3
    Dernier message: 07/05/2007, 18h56
  4. [EDI] Delphi .NET et compatibilité ascendante
    Par camcamagy dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 19/10/2006, 16h24
  5. help!! problème de compatibilité ascendante
    Par valfredr dans le forum XMLRAD
    Réponses: 5
    Dernier message: 16/06/2003, 16h15

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