Je viens de lire cet article :
http://java.dzone.com/articles/5-things-you-should-know-about-java-generics=
?utm_source=3Dfeedburner&utm_medium=3Dfeed&utm_campaign=3DFeed%3A+javalobby=
%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29&utm_content=3DGoogle+Reader
... et j'avoue ne pas avoir tout pig=E9 concernant la diff=E9rence entre
"extends" et "super", dans le point 4.
Effectivement, on trouve bien dans l'API (java.util.Collections) ce
genre de choses :
static <T> boolean addAll(Collection<? super T> c, T... a)
static <T> int binarySearch(List<? extends Comparable<? super T>>
list, T key)
static <T> int binarySearch(List<? extends T> list, T key,
Comparator<? super T> c)
Je n'avais m=EAme pas remarqu=E9 le coup du "static <T>", passons. Mais le
m=E9lange extends/super reste assez occulte en ce qui me concerne.
Quelqu'un a-t-il une explication claire, en fran=E7ais, ou un lien vers
une doc en ligne ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ToOmS
On 31 août, 11:29, ToOmS wrote:
Bonjour à tous,
Je viens de lire cet article :http://java.dzone.com/articles/5-things-you -should-know-about-java-ge...
... et j'avoue ne pas avoir tout pigé concernant la différence entre "extends" et "super", dans le point 4. Effectivement, on trouve bien dans l'API (java.util.Collections) ce genre de choses :
static <T> boolean addAll(Collection<? super T> c, T... a) static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
Je n'avais même pas remarqué le coup du "static <T>", passons. Mais l e mélange extends/super reste assez occulte en ce qui me concerne. Quelqu'un a-t-il une explication claire, en français, ou un lien vers une doc en ligne ?
Merci d'avance, Thomas.
j'ai trouvé ça (Java theory and practice: Going wild with generics), peut-être que ça aidera : http://www.ibm.com/developerworks/java/library/j-jtp04298.html http://www.ibm.com/developerworks/java/library/j-jtp07018.html
A+
On 31 août, 11:29, ToOmS <thomas_esco...@yahoo.fr> wrote:
Bonjour à tous,
Je viens de lire cet article :http://java.dzone.com/articles/5-things-you -should-know-about-java-ge...
... et j'avoue ne pas avoir tout pigé concernant la différence entre
"extends" et "super", dans le point 4.
Effectivement, on trouve bien dans l'API (java.util.Collections) ce
genre de choses :
static <T> boolean addAll(Collection<? super T> c, T... a)
static <T> int binarySearch(List<? extends Comparable<? super T>>
list, T key)
static <T> int binarySearch(List<? extends T> list, T key,
Comparator<? super T> c)
Je n'avais même pas remarqué le coup du "static <T>", passons. Mais l e
mélange extends/super reste assez occulte en ce qui me concerne.
Quelqu'un a-t-il une explication claire, en français, ou un lien vers
une doc en ligne ?
Merci d'avance, Thomas.
j'ai trouvé ça (Java theory and practice: Going wild with generics),
peut-être que ça aidera :
http://www.ibm.com/developerworks/java/library/j-jtp04298.html
http://www.ibm.com/developerworks/java/library/j-jtp07018.html
Je viens de lire cet article :http://java.dzone.com/articles/5-things-you -should-know-about-java-ge...
... et j'avoue ne pas avoir tout pigé concernant la différence entre "extends" et "super", dans le point 4. Effectivement, on trouve bien dans l'API (java.util.Collections) ce genre de choses :
static <T> boolean addAll(Collection<? super T> c, T... a) static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
Je n'avais même pas remarqué le coup du "static <T>", passons. Mais l e mélange extends/super reste assez occulte en ce qui me concerne. Quelqu'un a-t-il une explication claire, en français, ou un lien vers une doc en ligne ?
Merci d'avance, Thomas.
j'ai trouvé ça (Java theory and practice: Going wild with generics), peut-être que ça aidera : http://www.ibm.com/developerworks/java/library/j-jtp04298.html http://www.ibm.com/developerworks/java/library/j-jtp07018.html
A+
Mayeul
On 31/08/2010 11:29, ToOmS wrote:
Bonjour à tous,
Je viens de lire cet article : http://java.dzone.com/articles/5-things-you-should-know-about-java-generics?utm_sourceþedburner&utm_mediumþed&utm_campaignþed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29&utm_content=Google+Reader
... et j'avoue ne pas avoir tout pigé concernant la différence entre "extends" et "super", dans le point 4. Effectivement, on trouve bien dans l'API (java.util.Collections) ce genre de choses :
static<T> boolean addAll(Collection<? super T> c, T... a) static<T> int binarySearch(List<? extends Comparable<? super T>> list, T key) static<T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
Je n'avais même pas remarqué le coup du "static<T>", passons. Mais le mélange extends/super reste assez occulte en ce qui me concerne. Quelqu'un a-t-il une explication claire, en français, ou un lien vers une doc en ligne ?
Un truc qui m'a aidé, mais dont je ne me souviens pas où je l'ai lu :
- Une List<?> est une liste de trucs dont on ne sait pas ce que c'est. * On peut toujours demander la taille de la liste, et parcourir son contenu en tant qu'Object, parce que chaque élément est quand même au moins un Object ou une sous-classe d'Object. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
- Une List<? extends T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une sous-classe de T ou bien un T. * On peut parcourir ses éléments sous forme de T, parce que ce sont tous soit des T soit une sous-classe. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller. * À noter qu'on peut faire une List<? extends Date>, et qu'on ne sait pas si elle contient des Date, des Timestamp, des DateTime ou autre chose, mais en tout cas c'est soit Date soit une sous-classe. * À noter que List<?> est un raccourci de List<? extends Object>
- Une List<? super T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une classe mère de T ou bien un T. * On peut lui ajouter des T ou des sous-classes de T, parce qu'on sait qu'un T ou ses sous-classes sont forcément classe ou sous-classe du contenu de la liste. * On ne peut parcourir son contenu que comme Object, parce qu'on ne sait pas exactement ce qu'elle contient.
Autrement dit : - ? extends T : l'objet donne des T - ? super T : l'objet accepte des T - T : l'objet donne et accepte des T
-- Mayeul
On 31/08/2010 11:29, ToOmS wrote:
Bonjour à tous,
Je viens de lire cet article :
http://java.dzone.com/articles/5-things-you-should-know-about-java-generics?utm_sourceþedburner&utm_mediumþed&utm_campaignþed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29&utm_content=Google+Reader
... et j'avoue ne pas avoir tout pigé concernant la différence entre
"extends" et "super", dans le point 4.
Effectivement, on trouve bien dans l'API (java.util.Collections) ce
genre de choses :
static<T> boolean addAll(Collection<? super T> c, T... a)
static<T> int binarySearch(List<? extends Comparable<? super T>>
list, T key)
static<T> int binarySearch(List<? extends T> list, T key,
Comparator<? super T> c)
Je n'avais même pas remarqué le coup du "static<T>", passons. Mais le
mélange extends/super reste assez occulte en ce qui me concerne.
Quelqu'un a-t-il une explication claire, en français, ou un lien vers
une doc en ligne ?
Un truc qui m'a aidé, mais dont je ne me souviens pas où je l'ai lu :
- Une List<?> est une liste de trucs dont on ne sait pas ce que c'est.
* On peut toujours demander la taille de la liste, et parcourir son
contenu en tant qu'Object, parce que chaque élément est quand même au
moins un Object ou une sous-classe d'Object.
* On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la
liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
- Une List<? extends T> est une liste de trucs dont on ne sait pas ce
que c'est, mais qui, en tout cas, est une sous-classe de T ou bien un T.
* On peut parcourir ses éléments sous forme de T, parce que ce sont tous
soit des T soit une sous-classe.
* On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la
liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
* À noter qu'on peut faire une List<? extends Date>, et qu'on ne sait
pas si elle contient des Date, des Timestamp, des DateTime ou autre
chose, mais en tout cas c'est soit Date soit une sous-classe.
* À noter que List<?> est un raccourci de List<? extends Object>
- Une List<? super T> est une liste de trucs dont on ne sait pas ce que
c'est, mais qui, en tout cas, est une classe mère de T ou bien un T.
* On peut lui ajouter des T ou des sous-classes de T, parce qu'on sait
qu'un T ou ses sous-classes sont forcément classe ou sous-classe du
contenu de la liste.
* On ne peut parcourir son contenu que comme Object, parce qu'on ne sait
pas exactement ce qu'elle contient.
Autrement dit :
- ? extends T : l'objet donne des T
- ? super T : l'objet accepte des T
- T : l'objet donne et accepte des T
Je viens de lire cet article : http://java.dzone.com/articles/5-things-you-should-know-about-java-generics?utm_sourceþedburner&utm_mediumþed&utm_campaignþed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29&utm_content=Google+Reader
... et j'avoue ne pas avoir tout pigé concernant la différence entre "extends" et "super", dans le point 4. Effectivement, on trouve bien dans l'API (java.util.Collections) ce genre de choses :
static<T> boolean addAll(Collection<? super T> c, T... a) static<T> int binarySearch(List<? extends Comparable<? super T>> list, T key) static<T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
Je n'avais même pas remarqué le coup du "static<T>", passons. Mais le mélange extends/super reste assez occulte en ce qui me concerne. Quelqu'un a-t-il une explication claire, en français, ou un lien vers une doc en ligne ?
Un truc qui m'a aidé, mais dont je ne me souviens pas où je l'ai lu :
- Une List<?> est une liste de trucs dont on ne sait pas ce que c'est. * On peut toujours demander la taille de la liste, et parcourir son contenu en tant qu'Object, parce que chaque élément est quand même au moins un Object ou une sous-classe d'Object. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
- Une List<? extends T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une sous-classe de T ou bien un T. * On peut parcourir ses éléments sous forme de T, parce que ce sont tous soit des T soit une sous-classe. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller. * À noter qu'on peut faire une List<? extends Date>, et qu'on ne sait pas si elle contient des Date, des Timestamp, des DateTime ou autre chose, mais en tout cas c'est soit Date soit une sous-classe. * À noter que List<?> est un raccourci de List<? extends Object>
- Une List<? super T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une classe mère de T ou bien un T. * On peut lui ajouter des T ou des sous-classes de T, parce qu'on sait qu'un T ou ses sous-classes sont forcément classe ou sous-classe du contenu de la liste. * On ne peut parcourir son contenu que comme Object, parce qu'on ne sait pas exactement ce qu'elle contient.
Autrement dit : - ? extends T : l'objet donne des T - ? super T : l'objet accepte des T - T : l'objet donne et accepte des T
-- Mayeul
ToOmS
On 1 sep, 19:48, Mayeul wrote:
On 31/08/2010 11:29, ToOmS wrote:
> Bonjour à tous,
> Je viens de lire cet article : >http://java.dzone.com/articles/5-things-you-should-know-about-java-ge...
> ... et j'avoue ne pas avoir tout pigé concernant la différence entr e > "extends" et "super", dans le point 4. > Effectivement, on trouve bien dans l'API (java.util.Collections) ce > genre de choses :
> static<T> boolean addAll(Collection<? super T> c, T... a) > static<T> int binarySearch(List<? extends Comparable<? super T>> > list, T key) > static<T> int binarySearch(List<? extends T> list, T key, > Comparator<? super T> c)
> Je n'avais même pas remarqué le coup du "static<T>", passons. Mais le > mélange extends/super reste assez occulte en ce qui me concerne. > Quelqu'un a-t-il une explication claire, en français, ou un lien vers > une doc en ligne ?
Un truc qui m'a aidé, mais dont je ne me souviens pas où je l'ai lu :
- Une List<?> est une liste de trucs dont on ne sait pas ce que c'est. * On peut toujours demander la taille de la liste, et parcourir son contenu en tant qu'Object, parce que chaque élément est quand même au moins un Object ou une sous-classe d'Object. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
- Une List<? extends T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une sous-classe de T ou bien un T. * On peut parcourir ses éléments sous forme de T, parce que ce sont t ous soit des T soit une sous-classe. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller. * À noter qu'on peut faire une List<? extends Date>, et qu'on ne sait pas si elle contient des Date, des Timestamp, des DateTime ou autre chose, mais en tout cas c'est soit Date soit une sous-classe. * À noter que List<?> est un raccourci de List<? extends Object>
- Une List<? super T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une classe mère de T ou bien un T. * On peut lui ajouter des T ou des sous-classes de T, parce qu'on sait qu'un T ou ses sous-classes sont forcément classe ou sous-classe du contenu de la liste. * On ne peut parcourir son contenu que comme Object, parce qu'on ne sait pas exactement ce qu'elle contient.
Autrement dit : - ? extends T : l'objet donne des T - ? super T : l'objet accepte des T - T : l'objet donne et accepte des T
-- Mayeul
OK, très clair. Merci beaucoup !
On 1 sep, 19:48, Mayeul <mayeul.marg...@free.fr> wrote:
On 31/08/2010 11:29, ToOmS wrote:
> Bonjour à tous,
> Je viens de lire cet article :
>http://java.dzone.com/articles/5-things-you-should-know-about-java-ge...
> ... et j'avoue ne pas avoir tout pigé concernant la différence entr e
> "extends" et "super", dans le point 4.
> Effectivement, on trouve bien dans l'API (java.util.Collections) ce
> genre de choses :
> static<T> boolean addAll(Collection<? super T> c, T... a)
> static<T> int binarySearch(List<? extends Comparable<? super T>>
> list, T key)
> static<T> int binarySearch(List<? extends T> list, T key,
> Comparator<? super T> c)
> Je n'avais même pas remarqué le coup du "static<T>", passons. Mais le
> mélange extends/super reste assez occulte en ce qui me concerne.
> Quelqu'un a-t-il une explication claire, en français, ou un lien vers
> une doc en ligne ?
Un truc qui m'a aidé, mais dont je ne me souviens pas où je l'ai lu :
- Une List<?> est une liste de trucs dont on ne sait pas ce que c'est.
* On peut toujours demander la taille de la liste, et parcourir son
contenu en tant qu'Object, parce que chaque élément est quand même au
moins un Object ou une sous-classe d'Object.
* On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la
liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
- Une List<? extends T> est une liste de trucs dont on ne sait pas ce
que c'est, mais qui, en tout cas, est une sous-classe de T ou bien un T.
* On peut parcourir ses éléments sous forme de T, parce que ce sont t ous
soit des T soit une sous-classe.
* On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la
liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
* À noter qu'on peut faire une List<? extends Date>, et qu'on ne sait
pas si elle contient des Date, des Timestamp, des DateTime ou autre
chose, mais en tout cas c'est soit Date soit une sous-classe.
* À noter que List<?> est un raccourci de List<? extends Object>
- Une List<? super T> est une liste de trucs dont on ne sait pas ce que
c'est, mais qui, en tout cas, est une classe mère de T ou bien un T.
* On peut lui ajouter des T ou des sous-classes de T, parce qu'on sait
qu'un T ou ses sous-classes sont forcément classe ou sous-classe du
contenu de la liste.
* On ne peut parcourir son contenu que comme Object, parce qu'on ne sait
pas exactement ce qu'elle contient.
Autrement dit :
- ? extends T : l'objet donne des T
- ? super T : l'objet accepte des T
- T : l'objet donne et accepte des T
> Je viens de lire cet article : >http://java.dzone.com/articles/5-things-you-should-know-about-java-ge...
> ... et j'avoue ne pas avoir tout pigé concernant la différence entr e > "extends" et "super", dans le point 4. > Effectivement, on trouve bien dans l'API (java.util.Collections) ce > genre de choses :
> static<T> boolean addAll(Collection<? super T> c, T... a) > static<T> int binarySearch(List<? extends Comparable<? super T>> > list, T key) > static<T> int binarySearch(List<? extends T> list, T key, > Comparator<? super T> c)
> Je n'avais même pas remarqué le coup du "static<T>", passons. Mais le > mélange extends/super reste assez occulte en ce qui me concerne. > Quelqu'un a-t-il une explication claire, en français, ou un lien vers > une doc en ligne ?
Un truc qui m'a aidé, mais dont je ne me souviens pas où je l'ai lu :
- Une List<?> est une liste de trucs dont on ne sait pas ce que c'est. * On peut toujours demander la taille de la liste, et parcourir son contenu en tant qu'Object, parce que chaque élément est quand même au moins un Object ou une sous-classe d'Object. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller.
- Une List<? extends T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une sous-classe de T ou bien un T. * On peut parcourir ses éléments sous forme de T, parce que ce sont t ous soit des T soit une sous-classe. * On ne peut rien y ajouter, parce qu'on ne sait pas ce que contient la liste, et donc on ne sait pas si ce qu'on veut ajouter peut y aller. * À noter qu'on peut faire une List<? extends Date>, et qu'on ne sait pas si elle contient des Date, des Timestamp, des DateTime ou autre chose, mais en tout cas c'est soit Date soit une sous-classe. * À noter que List<?> est un raccourci de List<? extends Object>
- Une List<? super T> est une liste de trucs dont on ne sait pas ce que c'est, mais qui, en tout cas, est une classe mère de T ou bien un T. * On peut lui ajouter des T ou des sous-classes de T, parce qu'on sait qu'un T ou ses sous-classes sont forcément classe ou sous-classe du contenu de la liste. * On ne peut parcourir son contenu que comme Object, parce qu'on ne sait pas exactement ce qu'elle contient.
Autrement dit : - ? extends T : l'objet donne des T - ? super T : l'objet accepte des T - T : l'objet donne et accepte des T