En Java:
int count = (Integer) null;
lève une exception Java.lang.NullPointerException.
Pourquoi cela ne déclenche-t-il pas une exception de classe Cast pour faciliter la compréhension du programmeur?
Pourquoi cette exception a-t-elle été choisie par rapport à toute autre exception?
Lors de l'exécution de votre code, le runtime Java Java effectue les opérations suivantes:
En d'autres termes, null peut être converti en entier sans problème, mais un objet entier nul ne peut pas être converti en une valeur de type int.
[~ # ~] modifier [~ # ~]
J'ai eu une question connexe il y a un moment chez Stack Overflow, voir ici .
Java convertit avec succès null en une référence entière qui ne fait référence à aucun objet.
C'est OK car le fait de ne pas être différencié est un état valide pour une référence.
C'est l'appel d'une méthode d'un objet non existant qui ne peut pas être effectuée.
Exécution du casting (Integer)null
revient à déclarer une variable Integer et à ne pas lui affecter une nouvelle instance d'objet Integer (ou déjà existante).