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

    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 582
    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 582
    Points : 42 857
    Points
    42 857

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •