Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1430 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12
Auteur Sujet :

que pensez-vous des nouvelles spécification de java 1.5

n°522819
Taz
bisounours-codeur
Posté le 25-09-2003 à 00:27:50  profilanswer
 

Reprise du message précédent :

benou a écrit :


 :pfff:  
le but c'est de montrer que y a pas de cast a faire et que c'est type safe ...
 
Tu peux pas voir les choses objectivement pour changer ?

je sais bien. mais ici, tu peux pas dire que l'esthétisme brille  :sol: . je dis pas en comparaison à d'autres langages

mood
Publicité
Posté le 25-09-2003 à 00:27:50  profilanswer
 

n°522820
benou
Posté le 25-09-2003 à 00:29:40  profilanswer
 

Taz a écrit :

je sais bien. mais ici, tu peux pas dire que l'esthétisme brille  :sol: . je dis pas en comparaison à d'autres langages


mais c'est quoi cette remarque ??? quelque soit le langage tu peux faire du code illisible  :pfff:  


---------------
ma vie, mon oeuvre - HomePlayer
n°522821
Taz
bisounours-codeur
Posté le 25-09-2003 à 00:31:48  profilanswer
 

benou a écrit :


mais c'est quoi cette remarque ??? quelque soit le langage tu peux faire du code illisible  :pfff:  

et alors ? t'es bien d'accord que les template apportent  de la jolitude au code, par ce que les cast, c'est pas top quand même. de la jolitude et de la lisibilité.
 
 
 
 
 
 
 
 
bon j'efface le drapeau, t'as décidé de régner ici et d'être cassant, je te laisse avec ton java


Message édité par Taz le 25-09-2003 à 00:32:24
n°522822
benou
Posté le 25-09-2003 à 00:32:20  profilanswer
 

Taz a écrit :

1) ben genre STL : http://www.sgi.com/tech/stl/table_of_contents.html . en clair : va y avoir quoi dans collection ? qu'on bosse avec des collections, des tableaux ou autres, ça sera toujours transparent, ou y a comme STL des algotihmes qui fonctionnent sur des sequences itérables (donc pas tableau en java ...).  
-> tu as montré max, mais encore ?


 
ben y a déjà tout un tas d'algo qui existent, mais ca a rien à voir avec la généricité  [:mlc]  
 
 

Taz a écrit :


2) j'ai été trop vite: y aura les spécialisation de template ou pas ? ou cela n'a pas de sens dans la mesure ou les template en java, ça cache pas mal les cast?


tu demandes si il y arura de l'héritage de classes génériques ?
 
bien sûr, sinon il n'aurait pas été possible de faire le package java.util en générique : c'est plein d'héritage la dedans ...


---------------
ma vie, mon oeuvre - HomePlayer
n°522823
Taz
bisounours-codeur
Posté le 25-09-2003 à 00:33:13  profilanswer
 

en plus les templates t'y connais rien, mais moi ce que je dis, c'est toujours de la merde. plonk

n°522824
schnapsman​n
Zaford Beeblefect
Posté le 25-09-2003 à 00:35:19  profilanswer
 

benou a écrit :


 
ben y a déjà tout un tas d'algo qui existent, mais ca a rien à voir avec la généricité  [:mlc]  
 
 
 
tu demandes si il y arura de l'héritage de classes génériques ?
 
bien sûr, sinon il n'aurait pas été possible de faire le package java.util en générique : c'est plein d'héritage la dedans ...


 
 
nan, le gros bourru de service parlait des spécialisations d'un même template pour des types ou valeurs particulières   ;)  


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°522826
benou
Posté le 25-09-2003 à 00:38:08  profilanswer
 

Taz a écrit :

et alors ? t'es bien d'accord que les template apportent  de la jolitude au code, par ce que les cast, c'est pas top quand même. de la jolitude et de la lisibilité.


oui bien sûr. quoique ce ne soit pas le but principal. avant tout c'est de faire de la vérif de type à la compile plutot qu'à l'execution
 

Taz a écrit :

bon j'efface le drapeau, t'as décidé de régner ici et d'être cassant, je te laisse avec ton java


Vraiment je te comprend pas ... ici j'essaye d'apporter des infos. Toi visiblement tu cherches à critiquer ... dernier example en date : je mets un code qui retrace toutes les nouveautés. Le seul truc que tu trouves à dire c'est "bouh, elle est pas estétique cette ligne". Ca a franchement rien à voir avec le sujet. ca apporte rien ! C'est juste une critique ...
 
Je vois pas en quoi je suis cassant  :sweat:


---------------
ma vie, mon oeuvre - HomePlayer
n°522828
benou
Posté le 25-09-2003 à 00:39:38  profilanswer
 

Taz a écrit :

en plus les templates t'y connais rien, mais moi ce que je dis, c'est toujours de la merde. plonk


encore un post qui apporte beaucoup ...
 
En effet, je connais pas bien les templates. Je ne connais uniquement avec ce que j'ai appris avec l'Ada... mais j'ai envie de dire : et alors ?


---------------
ma vie, mon oeuvre - HomePlayer
n°522829
benou
Posté le 25-09-2003 à 00:41:03  profilanswer
 

SchnapsMann a écrit :

nan, le gros bourru de service parlait des spécialisations d'un même template pour des types ou valeurs particulières   ;)  


désolé je comprends tjs pas.  :sweat:  


---------------
ma vie, mon oeuvre - HomePlayer
n°522830
schnapsman​n
Zaford Beeblefect
Posté le 25-09-2003 à 00:47:46  profilanswer
 

benou a écrit :


désolé je comprends tjs pas.  :sweat:  
 


 
genre ça:

Code :
  1. // Template specialization  
  2. #include <iostream>
  3. template <class T>
  4. class pair {
  5.     T value1, value2;
  6.   public:
  7.     pair (T first, T second)
  8.       {value1=first; value2=second;}
  9.     T module () {return 0;}
  10. };
  11. template <>
  12. class pair <int> {
  13.     int value1, value2;
  14.   public:
  15.     pair (int first, int second)
  16.       {value1=first; value2=second;}
  17.     int module ();
  18. };
  19. template <>
  20. int pair<int>::module() {
  21.   return value1%value2;
  22. }
  23. int main () {
  24.   pair <int> myints (100,75);
  25.   pair <float> myfloats (100.0,75.0);
  26.   cout << myints.module() << '\n';
  27.   cout << myfloats.module() << '\n';
  28.   return 0;
  29. }



Message édité par schnapsmann le 25-09-2003 à 00:51:01

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
mood
Publicité
Posté le 25-09-2003 à 00:47:46  profilanswer
 

n°522831
benou
Posté le 25-09-2003 à 00:52:14  profilanswer
 

dans les 2 cas la réponse est non ...
 
edit : dans plus qu'un seul cas puisque que tu as effacé le 2e :)


Message édité par benou le 25-09-2003 à 01:21:30

---------------
ma vie, mon oeuvre - HomePlayer
n°522848
nraynaud
lol
Posté le 25-09-2003 à 02:18:03  profilanswer
 

SchnapsMann a écrit :


Code :
  1. template <class T>
  2. class pair {
  3. ...
  4.     T module () {return 0;}
  5. };


 

y'a petit bug d'inattention (c'est pas T mais int le type de retour).
 
Ce cas (assez moche) est résolu en objet par sous-classement et délégation.
 
 
les templates java, il faut plus les voir comme des types générique de ML que comme le méta-langage de C++.
C'est du typage et rien d'autre, le but est _uniquement_ de virer les conversion de type explicites. J'irais faire un tour dans les specs de la VM, mais on doit aussi pouvoir gagner un peu (très peu en fait, tout est déjà caché) de vitesse avec (un certain nombre de choses sont déjà prouvées, inutile de les vérifier dynamiquement).
 
 

benou a écrit :


ben y a déjà tout un tas d'algo qui existent, mais ca a rien à voir avec la généricité  [:mlc]


En règle générale si, en java ils ont étés fait à coup de Object (voir par exemple tout ce qui concerne les relations d'ordre), mais il va être temps de tout refaire proprement en générique et en générique contraint (d'ailleur on a rien à ce sujet dans la doc donnée il y a 2 pages, pas le moindre TreeBidule). Mais le terrain est largement déminé, avec ML, C++, ADA, et les systèmes à classes (Haskell, clean ...).


Message édité par nraynaud le 25-09-2003 à 02:34:02
n°522877
chrisbk
-
Posté le 25-09-2003 à 08:33:56  profilanswer
 

Code :
  1. LinkedList<LinkedList<String>> zss = new LinkedList<LinkedList<String>>();


 
tiens, ca compile ca ?
 
(terrible ton exemple, on dirait du C :D)


Message édité par chrisbk le 25-09-2003 à 08:36:41
n°522967
nraynaud
lol
Posté le 25-09-2003 à 09:40:03  profilanswer
 

chrisbk a écrit :

Code :
  1. LinkedList<LinkedList<String>> zss = new LinkedList<LinkedList<String>>();


 
tiens, ca compile ca ?
 
(terrible ton exemple, on dirait du C :D)


Pourquoi ça compilerait pas ?

n°522968
chrisbk
-
Posté le 25-09-2003 à 09:41:41  profilanswer
 

nraynaud a écrit :


Pourquoi ça compilerait pas ?


 
ben en java je sais pas, mais en C++ c'est un truc a se faire jeter par le compilo ( >> etant deja reservé pour le decalage de bit)
 

n°522971
benou
Posté le 25-09-2003 à 09:47:32  profilanswer
 

chrisbk a écrit :


ben en java je sais pas, mais en C++ c'est un truc a se faire jeter par le compilo ( >> etant deja reservé pour le decalage de bit)


ha ouais c'est vrai, je m'en souvenais plus de ce truc là :lol:
 
ben ouais ca compile bien (je suis arrivé à faire marcher le prototype de compilo, mais pas à lancer la classe compiler :/). Et j'ai vu pas mal d'exemple de ce genre (j'aime même vu carément pire !! genre new Map<Integer, Map<Pair<Integer,String>, Object>> [:totoz]
 


---------------
ma vie, mon oeuvre - HomePlayer
n°522973
chrisbk
-
Posté le 25-09-2003 à 09:50:07  profilanswer
 

benou a écrit :


ha ouais c'est vrai, je m'en souvenais plus de ce truc là :lol:
 
ben ouais ca compile bien (je suis arrivé à faire marcher le prototype de compilo, mais pas à lancer la classe compiler :/). Et j'ai vu pas mal d'exemple de ce genre (j'aime même vu carément pire !! genre new Map<Integer, Map<Pair<Integer,String>, Object>> [:totoz]
 
 


 
Houla :D

n°523007
benou
Posté le 25-09-2003 à 10:44:03  profilanswer
 


"Je ne dois jamais poster avant d'être totalement réveiller"  
"Je ne dois jamais poster avant d'être totalement réveiller"  
"Je ne dois jamais poster avant d'être totalement réveiller"  
"Je ne dois jamais poster avant d'être totalement réveiller"  
"Je ne dois jamais poster avant d'être totalement réveiller"  
"Je ne dois jamais poster avant d'être totalement réveiller"  
"Je ne dois jamais poster avant d'être totalement réveiller"  
"Je ne dois jamais poster avant d'être totalement réveiller"  
...


---------------
ma vie, mon oeuvre - HomePlayer
n°523074
nraynaud
lol
Posté le 25-09-2003 à 11:50:42  profilanswer
 

chrisbk a écrit :

ben en java je sais pas, mais en C++ c'est un truc a se faire jeter par le compilo ( >> etant deja reservé pour le decalage de bit)

Ah oui, c'est vrai, le langage qu'on ne sait pas compiler.

n°523092
kadreg
profil: Utilisateur
Posté le 25-09-2003 à 12:13:36  profilanswer
 

chrisbk a écrit :


ben en java je sais pas, mais en C++ c'est un truc a se faire jeter par le compilo ( >> etant deja reservé pour le decalage de bit)


 
 :ouch:  
 
 
 
 [:sisicaivrai]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°523099
chrisbk
-
Posté le 25-09-2003 à 12:26:03  profilanswer
 

kadreg a écrit :


 
 :ouch:  
 
 
 
 [:sisicaivrai]  


:heink:

n°523100
nraynaud
lol
Posté le 25-09-2003 à 12:26:16  profilanswer
 

kadreg a écrit :


 
 :ouch:  
 
 
 
 [:sisicaivrai]  


Code :
  1. terminal LSHIFT, RSHIFT, URSHIFT; // shift_expression
  2. terminal QUESTION; // conditional_expression
  3. class_or_interface_type ::=
  4.  class_or_interface
  5. | class_or_interface LT type_argument_list_1
  6. ;
  7. wildcard ::= QUESTION
  8. | QUESTION EXTENDS reference_type
  9. | QUESTION SUPER reference_type
  10. ;
  11. wildcard_1 ::= QUESTION GT
  12. | QUESTION EXTENDS reference_type_1
  13. | QUESTION SUPER reference_type_1
  14. ;
  15. wildcard_2 ::= QUESTION RSHIFT
  16. | QUESTION EXTENDS reference_type_2
  17. | QUESTION SUPER reference_type_2
  18. ;
  19. wildcard_3 ::= QUESTION URSHIFT
  20. | QUESTION EXTENDS reference_type_3
  21. | QUESTION SUPER reference_type_3
  22. ;
  23. reference_type_1 ::=
  24.  reference_type GT
  25. | class_or_interface LT type_argument_list_2
  26. ;
  27. reference_type_2 ::=
  28.  reference_type RSHIFT
  29. | class_or_interface LT type_argument_list_3
  30. ;
  31. reference_type_3 ::=
  32.  reference_type URSHIFT
  33. ;
  34. type_argument_list ::=
  35.  type_argument
  36. | type_argument_list COMMA type_argument
  37. ;
  38. type_argument_list_1 ::=
  39.  type_argument_1
  40. | type_argument_list COMMA type_argument_1
  41. ;
  42. type_argument_list_2 ::=
  43.  type_argument_2
  44. | type_argument_list COMMA type_argument_2
  45. ;
  46. type_argument_list_3 ::=
  47.  type_argument_3
  48. | type_argument_list COMMA type_argument_3
  49. ;
  50. type_argument ::=
  51.  reference_type
  52. | wildcard
  53. ;
  54. type_argument_1 ::=
  55.  reference_type_1
  56. | wildcard_1
  57. ;
  58. type_argument_2 ::=
  59.  reference_type_2
  60. | wildcard_2
  61. ;
  62. type_argument_3 ::=
  63.  reference_type_3
  64. | wildcard_3
  65. ;


 
finalement, il va peut-être falloir veiller à pas trop se moquer ...
 
(grammaire fournie par CUP : http://www.cs.princeton.edu/~appel/modern/java/CUP/ )
 
 
et je vais de se pas m'enquérir de ces points d'interrogation qui trainent dans les templates.

n°523623
nraynaud
lol
Posté le 25-09-2003 à 23:27:22  profilanswer
 

Je viens de trouver (ça a été dur),  
ça a été rajouté dans la version 2.0 du brouillon "Adding generics to the java programming language" dispo uniquement avec le proto (benou a donné le lien plus haut).
 
en gros, le placement d'un ? à la place d'un nom comme paramètre de type générique permet de ne pas polluer l'espace de nom si on utilise pas le paramètre.
 
petit exemple du brouillon:
 

Code :
  1. void printCollection(Collection<?> c) {
  2.   for(Object o : c)
  3.     System.out.println(o);
  4. }


ici on prend les éléments sous le type Object et on se prend pas la tête avec leur type réel.
 
 
je viens de découvrir les bornes de type (surtout la borne basse en fait, la borne haute c'est la classique contrainte sur type générique) je tente de dépatouiller et je fait une petite fouille, je crois qu'on en a pas encore parlé. Et on peut mélanger joker et bornes (toujour la même source) :
 

Code :
  1. Reference(T referent, ReferenceQueue<? super T> queue);
  2. [/ccp]
  3. petite explication : à un moment où à un autre, on va vouloir insérer referent dans queue (et pas l'inverse ... heu pardon) il faut donc que le type du référent soit sous-type du type des éléments du conteneur, c'est ce qu'exprime le super.
  4. pourquoi pas :
  5. [cpp]
  6. Reference(T referent, ReferenceQueue<T> queue);


??
car on brise la hiérarchie :

Code :
  1. ReferenceQueue<Object> q = ...;
  2. Reference<Integer> ref = new Reference(10, q);


donne une erreur de type dans le deuxième exemple alors qu'insérer un Integer dans un conteneur d'Object n'a rien de criminel. Dans le premier exemple, tout fonctionne bien.
 
 
bien entendu, dans l'autre sens ça marche aussi (exemple pas trop java, vu que c'est pluggable en java) :

Code :
  1. public class TreeMap<ELEMENT_TYPE extends Comparable> {
  2.   Cell root = null;
  3.   class Cell {
  4.     public ELEMENT_TYPE value;
  5.     Cell leftChild = null;
  6.     Cell rightChild = null;
  7.     public void insert(Cell cell) {
  8.       int compar = cell.value.compareTo(value);
  9.       if (compar == 0)
  10.         retun;
  11.       if ( < 0)
  12.         insertLeft(cell);
  13.       else
  14.         insertRight(cell);
  15.     }
  16.     ...
  17.   }
  18.   ELEMENT_TYPE getRoot() {
  19.     if (root == null)
  20.       return null;
  21.     return root.value;
  22.   }
  23. }


ici, on peut utiliser le compreTo() sans pb de type.
 
en en remettant un petit coup sur les joker, attention :

Code :
  1. public class TreeMap<? extends Comparable> {
  2.   Cell root = null;
  3.   class Cell {
  4.     Comparable value;
  5.     Cell leftChild = null;
  6.     Cell rightChild = null;
  7.     public void insert(Cell cell) {
  8.       int compar = cell.value.compareTo(value);
  9.       if (compar == 0)
  10.         retun;
  11.       if ( < 0)
  12.         insertLeft(cell);
  13.       else
  14.         insertRight(cell);
  15.     }
  16.     ...
  17.   }
  18.   ¿ on met quoi là ? getRoot() {
  19.     if (root == null)
  20.       return null;
  21.     return root.value;
  22.   }
  23. }


avec ce code, vous ne pouvez plus typer la méthode getRoot() et l'itérateur correctement. Si vous mettez un joker, vous êtes obligé "d'avaler" (l'oublier dans la suite) le type paramètre, si vous lui donnez un nom, vous pouvez le "recracher" (le réutiliser en sortie de méthodes publiques et le long de toute la "chaine" : variables et méthodes intermédiaires).
 
 
 
Je pense qu'on va rarement utiliser de la généricité non-bornée et que les débutants (nous-tous au début) vont galérer  avec le sens de la borne à mettre. Bienvenue dans un monde de covariance et contravariance.
 
 
Je sens aussi que le système de types statiques de java va donner des boutons à un certain nombre de personnes et que les parenthèses gardent un avenir radieux (et le ClassCastException aussi) dans le domaine du casting.

n°523627
benou
Posté le 25-09-2003 à 23:52:57  profilanswer
 

intéressant : j'étais pas allé jusque là dans l'étude des stubs :)
 
Tu m'as appris un truc : le <? super T>, je connaissais pas.
D'ailleur, à chaud, j'ai pas bien saisis à quoi il servait. D'après ton explication, ce que je comprend c'est que ca revient au même que le extends [:spamafote]. Pourtant d'après ce que tu dis par la suite ce serait plutut l'inverse ... Tu peux préciser ??
 
edit : c'est bon, j'ai capté en lisant la spécif. merci  :jap:


Message édité par benou le 26-09-2003 à 00:21:32

---------------
ma vie, mon oeuvre - HomePlayer
n°523631
benou
Posté le 26-09-2003 à 00:20:41  profilanswer
 

nraynaud a écrit :

Je sens aussi que le système de types statiques de java va donner des boutons à un certain nombre de personnes et que les parenthèses gardent un avenir radieux (et le ClassCastException aussi) dans le domaine du casting.


c'est quoi que tu appelles "types statiques" ?


---------------
ma vie, mon oeuvre - HomePlayer
n°523633
the real m​oins moins
Posté le 26-09-2003 à 00:28:55  profilanswer
 

jferais ptet bien de me grouiller à passer ma certif moi, parce qu'avec la 1.5 ça va etre chaud [:meganne]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°523634
benou
Posté le 26-09-2003 à 00:42:53  profilanswer
 

the real moins moins a écrit :

jferais ptet bien de me grouiller à passer ma certif moi, parce qu'avec la 1.5 ça va etre chaud [:meganne]


c'est clair que ca simplifie vraiment pas les choses !!!  [:mlc]


---------------
ma vie, mon oeuvre - HomePlayer
n°523635
the real m​oins moins
Posté le 26-09-2003 à 00:43:26  profilanswer
 

benou a écrit :


c'est clair que ca simplifie vraiment pas les choses !!!  [:mlc]  

déjà comme ça que je connais quasi rien des nouveautés de la 1.4...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°523636
benou
Posté le 26-09-2003 à 00:44:31  profilanswer
 

the real moins moins a écrit :

déjà comme ça que je connais quasi rien des nouveautés de la 1.4...


pareil  :sweat:  
mais bon, en jdk1.4 c'est juste des nouvelles API. là ca va quand même vachement plus loin ! :/


---------------
ma vie, mon oeuvre - HomePlayer
n°523637
nraynaud
lol
Posté le 26-09-2003 à 00:44:44  profilanswer
 

benou a écrit :

intéressant : j'étais pas allé jusque là dans l'étude des stubs :)
 
Tu m'as appris un truc : le <? super T>, je connaissais pas.
D'ailleur, à chaud, j'ai pas bien saisis à quoi il servait. D'après ton explication, ce que je comprend c'est que ca revient au même que le extends [:spamafote]. Pourtant d'après ce que tu dis par la suite ce serait plutut l'inverse ... Tu peux préciser ??
 


 
< Il y avait ici une bien belle connerie qui montre encore de la précipitation >


Message édité par nraynaud le 26-09-2003 à 01:43:09
n°523641
nraynaud
lol
Posté le 26-09-2003 à 00:49:57  profilanswer
 

benou a écrit :


c'est quoi que tu appelles "types statiques" ?

tout ça c'est du branlage de nouille de compilo, il n'en reste plus une seule trace à l'exécution.
 
les types statiques sont donnés par les déclarations de types dans le code et ne concernent que les expressions, les variables et les méthodes.
 
les types dynamiques sont données par le constructeur et ne concernent que les trucs qui existent réellement en mémoire à l'exécution (le champ classe dans l'entête des objets pour être précis).
 
edit : on a tout de même l'invariant suivant : le type statique d'une variable est super-type du type dynamique de l'objet qu'elle contient (puisque l'affectation a eu lieu).


Message édité par nraynaud le 26-09-2003 à 01:12:44
n°523647
benou
Posté le 26-09-2003 à 01:06:10  profilanswer
 


ok merci. entre temps j'avais capté (cf mon édit) mais ca pourra servir à d'autres...
 
par contre, d'après la specif, les bornes inférieurs ne peuvent d'appliquer que sur les '?' :  

Citation :

Unlike ordinary type variables declared in a method signature, no type inference is required when using
a wildcard. Consequently, it is permissable to declare lower bounds on a wildcard, using the syntax:


 
et j'ai vérifié dans la grammaire et ca semble confirmer que le super ne peut être mit qu'après un '?'


---------------
ma vie, mon oeuvre - HomePlayer
n°523649
benou
Posté le 26-09-2003 à 01:23:29  profilanswer
 

y a quand même des trucs qui sont chauds à capter !!!!  

Code :
  1. public static <T extends Comparable<? super T>>void sort(List<T> list);


 :pt1cable:
 
La méthode sort peut s'appliquer sur une List d'objets de type T qui doit être Comparable à un autre objet de type T ou de type supérieur à T :sweat:


Message édité par benou le 26-09-2003 à 01:30:32

---------------
ma vie, mon oeuvre - HomePlayer
n°523657
nraynaud
lol
Posté le 26-09-2003 à 01:39:54  profilanswer
 

benou a écrit :


le super ne peut être mis qu'après un '?'

C'est n'importe quoi ce que j'ai marqué plus haut sur super.

n°523660
veryfree
Posté le 26-09-2003 à 01:44:32  profilanswer
 

je survole vos post , et jvoulait savoir: est ce qu'il prepare une revolution chez sun ou c'est juste une mauvaise impression?
 
ca le fait un peu peur qd meme  :sweat:  

n°523661
benou
Posté le 26-09-2003 à 01:48:24  profilanswer
 

nraynaud a écrit :

C'est n'importe quoi ce que j'ai marqué plus haut sur super.  


ou ca ???


---------------
ma vie, mon oeuvre - HomePlayer
n°523662
benou
Posté le 26-09-2003 à 01:50:16  profilanswer
 

veryfree a écrit :

je survole vos post , et jvoulait savoir: est ce qu'il prepare une revolution chez sun ou c'est juste une mauvaise impression?
ca le fait un peu peur qd meme  :sweat:  


franchement oui.  C'est reconnu par Sun comme étant la plus grande évolutions de Java depuis sa sortie.
 
Mon avis est que java 1.5 aurait mérité de s'appeler java 2 ...


---------------
ma vie, mon oeuvre - HomePlayer
n°523665
nraynaud
lol
Posté le 26-09-2003 à 01:52:42  profilanswer
 

benou a écrit :


ou ca ???

j'ai édité pour virer la tartine de conneries.

n°523678
nraynaud
lol
Posté le 26-09-2003 à 02:21:51  profilanswer
 

benou a écrit :

y a quand même des trucs qui sont chauds à capter !!!!  

Code :
  1. public static <T extends Comparable<? super T>>void sort(List<T> list);


 :pt1cable:
 
La méthode sort peut s'appliquer sur une List d'objets de type T qui doit être Comparable à un autre objet de type T ou de type supérieur à T :sweat:  

T doit être au moins comparable avec lui-même (on va comparer 2 à 2 des éléments de type T).
 
et <T extends<T>> voudrait dire comparable avec T mais pas plus (et le "mais pas plus", il est néfaste, il risque de nous faire perdre des occasions).
 
Je pense que je démelle un peu.

n°523710
benou
Posté le 26-09-2003 à 08:59:31  profilanswer
 

nraynaud a écrit :

Je pense que je démelle un peu.


nan mais c'est bon j'ai compris ... mais j'ai quand même dur mattre 10 minutes à comprendre  :sweat:  
 
exemple où totu vas bien :  

Code :
  1. public class MonNumber extends Number implements Comparable<Number> {
  2. //...
  3. }
  4. Collection<MonNumber> coll = new ArrayList<MonNumber>();
  5. coll.add(new Integer(1));
  6. coll.add(new MonNumber(5));
  7. coll.add(new Float(10f));
  8. Collection.sort(coll); //ok, ca marche


 
exemple ou ca va moins bien

Code :
  1. public class MonNumberGen<Value extends Number> extends Number implements Comparable<Value> {
  2.    Value v;
  3.    public MonNumberGen(Value v) { this.v = v };
  4. //...
  5. }
  6. Collection<Number> coll = new ArrayList<Number>();
  7. coll.add(new Integer(1));
  8. coll.add(new MonNumber<Integer>(new Integer(5)));
  9. coll.add(new Float(10f));
  10. Collection.sort(coll); //là ca marche pas : MonNumber<Integer> est juste comparable à un Integer, pas à un Number !



---------------
ma vie, mon oeuvre - HomePlayer
n°524338
nraynaud
lol
Posté le 26-09-2003 à 22:08:01  profilanswer
 

Autre nouveauté :
 
Meyer est en train de gagner (10 ans après ses préconisations), Les types de retour des fonctions deviennent covariants (c'est pas grand-chose, ils ne se sont pas mouillé).
 
 
petit exemple :
 

Code :
  1. class A {
  2.   public C myMethod();
  3. }
  4. class B extends A {
  5.   public D myMethod();
  6. }
  7. avec
  8. class D extends C {
  9. ...
  10. }


 
Ce qui permet de travailler "dans le détail", de typer plus finement les valeurs si on le souhaite.
 
C'est donc une petite modification qui participe à la solution finale concernant la race des ClassCastException.
 
 
Attention, aucune modification de ce type concerant les arguments des fonctions, qui serait incompatible avec la surcharge (et qui pose des petits problèmes de vérification sur lesquels des chercheurs bossent encore).

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12

Aller à :
Ajouter une réponse
 

Sujets relatifs
[ Java ] Faire un navigateur web en java[Java] Librairies tierces supportant le HTML 4.0 ? [résolu en partie]
[JAVA][C#]Meilleur performance entre C# et Java ?[ java ] transfert de fichiers dans un socket
[Java] erreur sous IntelliJ IDEA, sous Jbuilder non...Applet JAVA dans du DHTML
Petite aide pour la réalisation d'un sniffer en JAVA[java] rafraichissement jframe + info optimisation [OK]
[ java ] ecouteur sur un repertoire[java] sortie dans un fichier excel?
Plus de sujets relatifs à : que pensez-vous des nouvelles spécification de java 1.5


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR