Bonjour
Le compilateur Java me refuse
comme si on avait pas le droit de manipuler des listes des types de base?Code:
1
2
3 ArrayList<long> ListHidDB; Iterator<long> itSegment;
Si il faut les englober dans une classe, c'est lourd!!!!
Version imprimable
Bonjour
Le compilateur Java me refuse
comme si on avait pas le droit de manipuler des listes des types de base?Code:
1
2
3 ArrayList<long> ListHidDB; Iterator<long> itSegment;
Si il faut les englober dans une classe, c'est lourd!!!!
les type de base ne sont pas des objet, ils ne sont donc pas manipulables en tant que tels et donc ne peuvent servir dans des generics. Maintenant, ce processus n'est pas lourd, java s'en sort très biens avec ;)
je vais coder
Class Long
{
long ?this?
}
il y a déjà un classe Long dans java! Tous les types de base on leur classe associée et, depuis java 5, le compilateur fait de l'autoBoxing. Vous pouvez donc écrire:
Code:
1
2
3
4 List<Long> maListe = ....; maListe.add(444719); System.out.println("premier élément au carré: "+(maListe.get(0)*maListe.get(0)));
tu peux utiliser l'objet java.lang.Long (objet encaspulant le type primitif long)
Il existe de vrai objet pour chaque type primitif (la plupart du temps il suffit de remplacer la premiere lettre et de la mettre en majuscule, a par pour int qui devient Integer et char qui devient Character)
A partir de Java 5 tu pourra utilisé ces objets de facon transparente (presque) comme les types primitifs. Il faudra juste eviter quelques piège. Je te laisserai chercher des explications concernant l'"autoboxing"
Bonjour
Je n'y ai cependant pas trouve de pièges décrits....
Quoi qu'il en soit ca donne une réponse à ma question.
à+
Les pièges sont souvent des problèmes de performance engendré par l'utilisation abusive de l'autoboxing.
Par exemple:
Dans ce code, toutes les opérations nécessite une conversion de Integer vers int et vice versa. Cela entraine donc un surcout inutile.Code:
1
2
3
4 Integer sum = 0; for (Integer i = 0; i < 10; i++) { sum += i; }
L'exemple est un peu caricatural mais réel.
J'ai également vu des exemples de code provoquant des comportements surprenant. Par contre je ne me souvient ni de l'exemple ni de la source :oops:
;)Code:
1
2
3
4
5
6
7
8
9 Integer a = 57; Integer b = 57; Integer c = 2044; Integer d = 2044; if (a==b) // vrai if (c==d) // faux