Voici ce code:conversion implicite de type primitif à objet
int[] someArray = {0, 1, 2, 3};
//System.out.println(someArray[0].toString()); int cannot be dereferenced
// creating Object element with use of primitive element fails
//Object newObject = new Object(someArray[0]); constructor Object in class java.lang.Object cannot be applied to given types;
for(Object someObject : someArray)
{
// here int is casted to Object
System.out.println(someObject.toString()); // prints 0, 1, 2, 3
}
Comment se fait-il que la variable de type primitif (élément de tableau) ne peut pas être explicitement casté en objet, mais en quelque sorte dans la boucle for cet élément primitif est casté à Object?
Question intéressante. Ma conjecture est que la boucle foreach améliorée pour les tableaux fonctionne en créant une sorte de classe d'itérateur interne qui encadre le type primitif donné. C'est à dire. vous n'êtes pas en train d'itérer directement sur le tableau, mais sur un Iterator caché. –
millimoose
Vous ne diffusez aucun contenu dans vos commentaires. 'int x = 5; System.out.println (((Object) x)); 'fonctionnera certainement correctement, même sans boucle. –
@ThomasJungblut Le fait est que la boucle foreach ne fait généralement pas ce genre de casting pour vous non plus. – millimoose