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

    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 :
    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
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 220
    Points : 34 913
    Points
    34 913

    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 :
    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 (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

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
  •