« Programmation Java/Transtypage » : différence entre les versions

Contenu supprimé Contenu ajouté
m →‎Cas des types primitifs : that's not the point. short it is not even guaranteed to be 16 bits long at runtime. Conversion is a matter of the language spec, and will work regardless of the amount of bits chosen by the implementation at runtime.
Ligne 187 :
=== Autoboxing ===
 
Java 5 introduit un mécanisme permettant la simplification du transtypage, appelé ''autoboxing''. Ce mécanisme permet d'utiliser indifféremment [[../Types de base|les types primitifs et les classes wrappers]]. Exemple :
 
Avant Java 5, il fallait écrire :
<source lang="java">
List integers = methodeRenvoyantDesIntegers();
for(i=0;i<integers.size();i++)
{
Integer integer = (Integer)integers.get(i);
int actuel = Integer.parseInt(integer);
methodNecessitantUnInt(actuel);
}
</source>
Alors qu'avec Java 5, il suffit d'écrire :
<source lang="javajava5">
List integers = methodeRenvoyantDesIntegers();
for(i=0;i<integers.size();i++)
{
int actuel = (Integer)integers.get(i);
methodNecessitantUnInt(actuel);
}
</source>
On voit que les int et les Integer sont utilisés indifféremment.
 
Toutefois, il n'est pas possible de déclarer un type générique avec un type primitif.
Il faut utiliser [[../Type de base#Les classes wrappers|la classe englobante correspondante]].
 
Exemple :
<source lang="java5">
ArrayList<Integer> counters = new ArrayList<Integer>();
counters.add(500);
int n = counters.get(0);
</source>
 
{{NavChapitre|prev=Classes internes|next=Types génériques}}