Selon le Documentation , "Si l'élément spécifié est null et
Cette liste ne supporte pas NULL
éléments (facultatif). " p>
BlockQuote> J'essayais simplement de penser à une mise en œuvre de la liste qui ne permet pas à NULLS cependant, et je ne suis au courant d'aucun. Par exemple, je peux avoir est donc la documentation ici faisant référence à des implémentations personnalisées de cette interface ou existe-t-il des classes de collection Java natif qui étendent code> code> qui n'autorisent pas les éléments null? Je réalise que l'exception est facultative, j'essayais simplement de penser à un cas réel mondial où cela pourrait se produire. P> P> List.Contains Code> Peut lancer
NullpointException code> dans ce scénario:
arraylist
5 Réponses :
Cela fait référence à des implémentations personnalisées, jusqu'au jour où l'une des implémentations de la liste de Java désactive NULL, puis il conviendra également de cela. P>
--- post modifié en réponse aux commentaires --- p>
Fondamentalement la raison pour laquelle il est illégal de vous rappeler d'attraper le --- Le message original suit --- p>
Ceux fournis par les bibliothèques java standard prennent en charge NULL, mais il n'y a aucune restriction à la création d'une classe qui implémente Si la liste ne prend pas en charge nullpointexcepton code> car les concepteurs de la liste code> interface envisagée des listes envisagées pouvant signaler tout
null code > accès comme une erreur. P>
java.util.list code> qui ne prend pas en charge
null code> s. p>
null code>, alors recherchez un
null code> est équivalent à une erreur. L'exception peut donc avoir un sens en fonction de l'OMS implémentée le
Liste code>. C'est pourquoi l'interface doit mentionner l'exception vérifiée; Parce que, si ce n'est pas le cas, vous ne pouvez pas lancer un
nullpointerexception code> de la sous-classe, vous avez voulu vous assurer que personne n'a touché la liste avec un
null code>. p>
En fait, depuis que la NPE est une exception à la runtimédia, il n'est pas nécessaire de le déclarer dans la signature de la méthode (si c'était à peu près tout ce qui l'aurait, car c'est une exception aussi commune). Plus susceptiment qu'ils disent qu'ils veulent soutenir des listes qui ne permettent pas NULLS, et que si vous vérifiez s'il contient une valeur null, elle jettera cette exception intentionnellement, par opposition à tous les cas d'exécution dans lesquels cela pourrait arriver comme essayer d'accéder aux propriétés d'une instance NULL, lorsque le VM le jette pour vous.
On dirait que vous disiez la même chose d'abord, mais il semble que la raison principale qu'il soit là qu'il est là de vous rappeler que vous devez vérifier le NPE, car tout code spécifique de la liste est plus susceptible de lancer la NPE (en raison de la mise en œuvre).
Ou éventuellement, ils essaient de couvrir les développeurs qui pourraient essayer de faire obj.equals code> sur l'argument adopté dans leur mise en œuvre de la liste sans vérifier si c'est NULL, et finira par donner une NPE sans qu'ils se rendent compte . :)
Vrai, mais compte tenu d'une telle "fonctionnalité" serait considérée comme un bug de la plupart, je ne pense pas qu'ils essayaient d'activer la faible assainissement des données sur les intrants de la collecte.
Plain et simple, les personnes qui ont développé cette API ne veulent pas que vous attrapiez une NPE. Comme l'a dit Andrei, ils couvrent tous les développeurs. Josh Bloch (OMS architectes dans le cadre de collections) respecte le principe du moins d'étonnement. Le commentaire explique cela.
Toutes les implémentations de la liste <...> permettent aux éléments d'être nuls. P>
Un exemple est Rolelist :: ajout (rôle) code>
qui jette une exception lors de l'ajout d'une valeur null. P>
Cette documentation vous prépare à une telle rencontre, vous encourage à vérifier la documentation de la liste des tâches que vous travaillez pour voir si c'est une préoccupation, ou de vous tromper du côté de la prudence si vous ne pouvez pas le vérifier. Suivi de NPE's n'est pas amusant. Connaissant la documentation (à condition que la bonne documentation existe) peut économiser beaucoup de maux de tête. P>
Merci pour la réponse et l'exemple. Merci à tous les autres pour leurs réponses aussi, ils étaient utiles, j'ai juste aimé la façon dont cette réponse a expliqué succinctement les choses.
Ironiquement, il ne jette pas un nullpointexception code> mais un
illegalargumentException code>. Mais le point reste: c'est un rappel que vous ne pouvez pas supposer que NULL est autorisé dans.
GUAVA 'S immutableliste code> désalcule null, mais il renvoie false sur
contient (null) code>. p>
Intéressant. Donc, immutateset code>. Mais des cartes créées par
MapMaker CODE> Lancer un
NullPointerException CODE> ON
CONTACTKEY (NULL) CODE>
a CheckedList serait un exemple de liste dans l'API standard qui ne prend pas en charge les NULLS. P>