9
votes

Casting Boolean à Boolean en Java

J'ai un code comme xxx

la question est de canaliser la ligne system.out.println (obj.boolantanvalue ()); lancer nullpointerexception < / code> dans n'importe quelle situation?


3 commentaires

Chaque fois que je le vois, je me demande pourquoi les gens n'écrivent aucun constructeur args et appeler explicitement super ().


Parce que quelqu'un pourrait ajouter un autre constructeur et que vous voulez vous assurer que le constructeur de Noarags est toujours présent. Parce qu'il est logiquement plus explicite. Bien que je dois admettre dans un extrait de code illustratif, ce n'est pas très utile.


Il n'y a pas non plus besoin d'appeler super ().


4 Réponses :


13
votes

Non, lorsque vous cognez une valeur primitive dans son type d'emballage équivalent, le résultat n'est jamais nul.


1 commentaires

C'est parce qu'un type primitif peut jamais NULL.



8
votes

non ,

Raison: primitive ne tient jamais null, alors la convertir à Wrapper sera jamais mène à la NPE,

et aussi pas besoin de castes il sera autobox


4 commentaires

Ce n'est pas vraiment rien à voir avec les valeurs par défaut. Il s'agit du fait que les types primitifs sont des types de valeur - la valeur d'un int est l'entier lui-même, pas une référence ... alors comment pourrait-il être null ?


@Jon, j'ai mentionné la valeur par défaut juste pour faire comprendre que dans tous les cas, la primitive ne tiendra pas null


Life.java: Pour moi, cela confond des choses plus que de les rendre plus claires. La différence entre les types de valeur et les types de référence a très peu à voir avec les valeurs par défaut.


@Jon j'ai aussi compris qu'après avoir lu votre commentaire, réponse mise à jour.



4
votes

Il ne jettera jamais une NPE et aussi si vous utilisez Java> = 1,5, vous n'avez pas besoin de le jeter. Il est appelé autoboxing qui est introduit de JDK 1.5.


0 commentaires

2
votes

Juste pour être pédants, vous pourriez avoir défini System.out pour être NULL, alors cette ligne générera une NPE.

Mais ce serait étrange.


0 commentaires