Peut Booléenne.valueOf(String) retourne la valeur null?
Peut Boolean.valueOf(String)
jamais retourner la valeur null? De ce que je peux voir dans le java docs, les docs ne spécifiez quand elle retourne true. Est faux toujours retourné dans le cas contraire, ou peut-null sera retourné? Je n'ai pas été en mesure de l'obtenir à retourner la valeur null dans les tests que j'ai fait, mais je voudrais être sûr.
Essentiellement, je veux savoir si le code suivant est à l'abri d'une NullPointerException:
boolean b = Boolean.valueOf(...);
pourquoi ne pas vous regardez la source . il a juste une ligne. poster la question dans ce forum permettra de prendre plus de temps que de chercher à la source 🙂
Ne savais pas que la source était disponible. Sera la prochaine fois merci.
Notez que la source peut varier. Il y a beaucoup de machines virtuelles.
Ne savais pas que la source était disponible. Sera la prochaine fois merci.
Notez que la source peut varier. Il y a beaucoup de machines virtuelles.
OriginalL'auteur jlars62 | 2014-04-30
Vous devez vous connecter pour publier un commentaire.
Les docs assez bien répondre: non. Il va retourner un
Boolean
représentant une valeur vrai ou faux.La le code est également disponible:
Boolean
plutôt que le type primitifboolean
? Juste curieux de ce que le raisonnement est.La Javadoc ne spécifiez pas quand il a été introduit, mais je suppose qu'il est antérieur à Java 1.5, dans lequel l'autoboxing a été introduit. Donc, si vous avez eu une
boolean
et avait besoin d'unBoolean
(pour quelque raison que ce soit), vous avez besoin à appeler manuellementBoolean.valueOf(booleanPrimitive)
. Le tout aurait étéBoolean b = Boolean.valueOf(Boolean.valueOf(myString))
. Je suppose qu'ils ont pensé que c'était d'un commun suffisamment de cas d'utilisation qu'ils voulaient pour la raccourcir. Mais c'est que spéculation.Et sur le revers de la médaille, si vous avez besoin de la primitive (sans l'autoboxing), c'est juste
Boolean.valueOf(myString).booleanValue()
, qui n'a pas de nidification et est donc plus facile à lire. Donc, fondamentalement, de toute façon ils n'allaient pas touché tous les cas d'utilisation, donc ils ont choisi l'un d'entre eux, soit parce qu'ils pensaient que c'était plus commun, ou parce qu'ils pensaient que c'est plus polyvalent (en ce qu'elle convertit à l'autre plus facilement), ou pour quelque autre raison.Dû réfléchir à deux fois à propos de cette réponse. La spec dit: "( ... ) renvoient un Booléen avec une valeur (...)'. Qui, implicitement, à l'exclusion d'une valeur null être retournés, mais je pense que la formulation n'est pas assez claire
n'est pas un
Boolean
;null instanceof Boolean
sera de retourfalse
. Voir JLS 4.1:There is also a special null type, the type of the expression null
.OriginalL'auteur yshavit
Non, c'est impossible. Voir le code source de la classe
Boolean
:.. et puis:
OriginalL'auteur Aleksey Bykov
Non ça va pas. Si la valeur null est placé à l'intérieur de l'argument ou si une chaîne est définie sur null elle renvoie une valeur booléenne false. Vous pouvez voir les entrées et les sorties en Java docs: http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#booleanValue()
OriginalL'auteur Dan K.
En fait, il pourrait causer des NPE, mais ne peut pas retourner la valeur null. Essayez ceci:
Cela se produit parce que
Boolean.valueOf()
accepteString
ouboolean
valeurs. DepuisbNull
est de typeBoolean
java tente de unboxbNull
valeur à transmettre commeboolean
qui provoque des entrées en phase nationale. C'est drôle, mais stupide, en fait... il n'est pasBoolean.valueOf()
pourNumber
.OriginalL'auteur Stan