IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[SCJP] Overloading de method avec un null


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 69
    Points
    69
    Par défaut [SCJP] Overloading de method avec un null
    Bonjour à tous,

    En préparant le SCJP je viens de tomber sur un bout de code que je ne parviens pas à expliquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        public class AQuestion
        {
             public void method(Object o)
             {
                 System.out.println("Object Verion");
             }
     
             public void method(String s)
             {
                System.out.println("String Version");
             }
     
             public static void main(String args[])
             {
                 AQuestion question = new AQuestion();
                 question.method(null);
             }
     
        }
    Ce code donne en sortie :
    Quelqu'un pourrait m'expliquer pourquoi? Car là j'avoue que je sèche (et que je ne sais plus par où chercher...)

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Parce que :
    - null est compatible avec tous les types de données.
    - String hérite de Object.

    Java va toujours chercher à utiliser la méthode la plus "précise" (principe objet), qui dans ce cas est method(String).

    Avec method(Object), method(Number) et method(Integer), method(null) aurait appelé method(Integer) car Integer hérite de Number qui hérite d'Object.

    Avec method(Object), method(Integer) et method(String), method(null) aurait conduit à une erreur (de compilation ou d'exécution en fonction du contexte), car Integer et String ne sont pas compatibles, et il-y-a donc une ambiguité sur la méthode à appeler.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 69
    Points
    69
    Par défaut
    Merci CyberChouan pour ta réponse à la fois détaillée et précise

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/09/2009, 16h40
  2. Addition avec terme NULL
    Par blackfelix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/10/2004, 08h53
  3. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40
  4. [C#][WebServices] Appel methode avec une classe en paramètre
    Par bran_noz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 16h41
  5. Pb requete avec valeurs nulles
    Par James85 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/04/2004, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo