1. #1
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2009
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2009
    Messages : 270
    Points : 108
    Points
    108

    Par défaut Generics : méthodes identiques

    Bonjour à tous,

    Peut-on me dire pourquoi ces 2 méthodes identiques ne fonctionnent pas de
    manière identique :

    la méthode min2 --> problème avec compareTo


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    package ajeter;
     
     
    import java.util.ArrayList;
    import java.util.List;
     
     
    class A {
    }
     
    class B extends A{
     
    } 
     
     
    class C <T> {
    	 String mot = "pour TEST";
    	 static String mot2 = "pour TEST2";
     
     
    	 public static <T extends Comparable<? super T>> 
     
    	 T min(List<T> liste) {
    		 if (liste == null || liste.isEmpty())
    		 return null;
    		 T min = liste.get(0);
    		 for (int i = 1; i < liste.size(); i++) {
    		 if (liste.get(i).compareTo(min) < 0)
    		 min = liste.get(i);
    		 System.out.println("Attribut static de méthode non static : " +  mot2);
    		 }	 
    		 return min;
    	 }
     
     
    	 T min2(List<T> liste) {
    		 if (liste == null || liste.isEmpty())
    		 return null;
    		 T minimum = liste.get(0);
    		 for (int i = 1; i < liste.size(); i++) {
    		 if (liste.get(i).compareTo(minimum) < 0)
    			 minimum = liste.get(i);
    		 System.out.println("Attribut static de méthode non static : " +  mot2);
    		 }		 
    		 return minimum;
    	 }
     
    }
     
     
    public class Nice2 {
    	public static void main(String[] args) {
     
    		C<Number> c = new C<Number>();
    		List<Integer> li = new ArrayList<Integer>();
    		li.add(new Integer(15));
    		li.add(new Integer(17));
     
    		System.out.println("Le minimum : " + c.min(li));
    		System.out.println("Le minimum2 : " + c.min2(li));
     
     
     
    	}
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    24 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 24 619
    Points : 46 984
    Points
    46 984

    Par défaut

    Elles ne sont absolument pas identiques. La première est une méthode statique publique qui prend en paramètre un Liste de comparable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static <T extends Comparable<? super T>>  T min(List<T> liste)
    La seconde est une méthode d'instance non publique qui prend en paramètre une Liste d'objets.
    On recherche de nouveaux collègues Java / Java EE seniors sur louvain
    faq java, cours java, javadoc. Pensez à et

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/12/2010, 21h30
  2. Generic : méthodes
    Par Morbo dans le forum Langage
    Réponses: 6
    Dernier message: 30/10/2008, 13h47
  3. Réponses: 5
    Dernier message: 22/04/2008, 15h56
  4. [jse5/generics] Méthodes génériques
    Par palnap dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2008, 12h14
  5. [Generics] Diriger vers la bonne méthode
    Par anthyme dans le forum C#
    Réponses: 12
    Dernier message: 01/10/2007, 19h21

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