Politique de lookup avec le litteral null en parametre ?
1 réponse
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Hervé AGNOUX
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
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.
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.