« Programmation Java/Transtypage » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : ajoute Catégorie:Programmation_Java (livre) |
mAucun résumé des modifications |
||
Ligne 10 :
Exemple :
<source lang="java">
long a=1000L;
int b=(int)(a*3L)+2; // multiplie '''a''' par 3,
// convertit en int, et ajoute 2
</source>
Les types de base entiers, reéls et caractères peuvent être convertis dans un autre type de ce groupe (entiers, réels, caractères).
Un booléen ne peut être converti.
Ligne 22 ⟶ 23 :
Exemple 1 :
<source lang="java">
class
class B extends A { ... }
B objB = new B();
A objA = (A)objB; // la classe A est parente de la classe B
</source>
Exemple 2 :
class A {
class B extends A {
Object obj = new B();
Ligne 41 ⟶ 43 :
A objA = (A)obj; // la classe A est parente de la classe B
</source>
=== Transtypage implicite ===
Pour les types de base, les conversions implicites sont les suivantes :
*Toute expression ou constante utilisant un type entier, excepté <tt>long</tt>, est implicitement convertit en <tt>int</tt>,<br/>Exemples :
<source lang="java">
short s;
s = 15; // <-- erreur générée, 15 est de type int
Ligne 53 ⟶ 56 :
long a = 1 + 2L;
long b = 3 + a;
</source>
Pour les objets, la conversion en une classe parente peut être implicite.
Exemple :
<source lang="java">
Object obj = new A();
</source>
=== Autoboxing ===
Ligne 63 ⟶ 67 :
Avant Java 5, il fallait écrire :
<source lang="java">
List integers = methodeRenvoyantDesIntegers();
for(i=0;i<integers.size();i++) {
Ligne 70 ⟶ 74 :
methodNecessitantUnInt(actuel);
}
</source>
Alors qu'avec Java 5, il suffit d'écrire :
<source lang="java">
List integers = methodeRenvoyantDesIntegers();
for(i=0;i<integers.size();i++) {
Ligne 78 ⟶ 82 :
methodNecessitantUnInt(actuel);
}
</source>
On voit que les int et les Integer sont utilisés indifférement.
|