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 :

Problème de dédutant avec un generics


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Par défaut Problème de dédutant avec un generics
    Je débute avec les generics et je viens de tomber sur un problème qui m'échappe,
    Voici le code d'une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Couple<T extends  Comparable> {
    	private T v1, v2;
    	public Couple(T nv1, T nv2) {
    		v1 = nv1;
    		v2 = nv2;
    	}
    	public T max() {
    		if(v1 != null && v2 != null) return null;
    		if(v1.compareTo(v2)> 0)
    			return v1;
    		else 
    			return v2;
    	}
    }
    Le compilateur m'indique le message : "uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details"
    Et après recompilation avec l'option Xlint, le nouveau message est :
    [unchecked] unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable
    if(v1.compareTo(v2)> 0)
    ^
    Il semble donc que je puisse avoir un problème avec v2, mais je ne vois pas lequel, en particulier, comment provoquer une erreur de convertion en utilisant max?

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Paramètre le comparable :

    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
     
    class Couple<T extends  Comparable<T>> {
    	private T v1, v2;
    	public Couple(T nv1, T nv2) {
    		v1 = nv1;
    		v2 = nv2;
    	}
    	public T max() {
    		if(v1 != null && v2 != null) return null;
    		if(v1.compareTo(v2)> 0)
    			return v1;
    		else 
    			return v2;
    	}
    }

  3. #3
    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,


    Comparable est lui même un type paramétré, qui permet d'indiquer avec quel type d'objet il est comparable (en général c'est le type courant).

    Si tu ne précise pas cette info, le compilateur ne peut pas s'assurer que l'appel à compareTo() soit correct et génère donc une erreur...

    Donc tu dois conserver cette info dans la définition de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Couple<T extends Comparable<T>> {
    Ou mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Couple<T extends Comparable<? super T>> {
    Cette seconde solution est plus adapté en cas d'héritage d'une classe déjà comparable


    a++

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Par défaut Merci
    Merci pour votre réponse, je cherchais ailleurs ...

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

Discussions similaires

  1. Problème avec les Generics et héritage
    Par jojodu31 dans le forum Langage
    Réponses: 5
    Dernier message: 17/06/2010, 10h04
  2. Problèmes avec les generics
    Par mehdi_swatch dans le forum Langage
    Réponses: 12
    Dernier message: 10/07/2006, 18h35
  3. [Problème] avec les generics
    Par Prodejeu dans le forum Langage
    Réponses: 6
    Dernier message: 29/06/2006, 12h48
  4. Problème avec une generic method
    Par Pragmateek dans le forum Langage
    Réponses: 15
    Dernier message: 24/05/2006, 19h25
  5. Problèmes de versions avec Xalan, Xerces et Java
    Par honeyz dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 05/06/2003, 10h18

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