Politique de lookup avec le litteral null en parametre ?

Le
pipus
Bonjour,

Une petit question technique sur le lookup des methodes. L'execution
en Jdk 1.3.1 et 1.4.2 de la ligne suivante :

String.valueOf(null)

cree l'exception suivante :

java.lang.NullPointerException
at java.lang.String.<init>(String.java:166)
at java.lang.String.valueOf(String.java:2145)

Apres verification, il semble que la methode valueOf appelee soit :
String valueOf(char[]). L'exception NPE s'explique aisement, et en
castant mon null en Object ca passe sans difficulte :

String.valueOf((Object) null)

Neanmoins j'aimerais bien comprendre pourquoi l'appel a la methode
avec le parametre null aboutit a la methode valueOf(char[]) et non pas
une autre. Quelle est la politique de lookup lorsqu'un parametre est
null ?

Merci !
Vos réponses
Trier par : date / pertinence
Hervé AGNOUX
Le #163302
Pipus wrote:

Bonjour,

Une petit question technique sur le lookup des methodes. L'execution
en Jdk 1.3.1 et 1.4.2 de la ligne suivante :

String.valueOf(null)

[...]


Neanmoins j'aimerais bien comprendre pourquoi l'appel a la methode
avec le parametre null aboutit a la methode valueOf(char[]) et non pas
une autre. Quelle est la politique de lookup lorsqu'un parametre est
null ?



Les spécifications du langage, au chapitre "15.12 Method Invocation
Expressions", à
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#20448,
expliquent j'ai l'impression assez bien toutes ces histoires.

"Assez bien", c'est à dire que je n'ai pas hyper fouillé les détails.

Pour le cas précis que tu soulèves, je présume que c'est la règle du "plus
spécifique" qui s'applique : null pourrait être aussi bien un objet qu'un
tableau. Un tableau étant plus spécifique qu'un objet, le compilateur a
choisi l'appel avec un tableau.

A vérifier.


--
Hervé AGNOUX
http://www.diaam-informatique.com

Publicité
Poster une réponse
Anonyme