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

Contenu supprimé Contenu ajouté
Tavernierbot (discussion | contributions)
Grunge (discussion | contributions)
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 A { ''...'' } // extends Object implicite
class B extends A { ''...'' } // extends Object implicite
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 { ''...'' } // extends Object implicite
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.