p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre régulier
    Inscrit en
    novembre 2009
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 227
    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 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

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

    Informations forums :
    Inscription : avril 2007
    Messages : 22 896
    Points : 43 510
    Points
    43 510

    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

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