+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre régulier
    Inscrit en
    novembre 2009
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 225
    Points : 70
    Points
    70

    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 Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    22 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

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

    Informations forums :
    Inscription : avril 2007
    Messages : 22 742
    Points : 43 139
    Points
    43 139

    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.
    "Tchize is always good. Tchize is just milk’s attempt at being immortal"
    faq java, cours java, javadoc. Pensez à et