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 :

Demande de précisions


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 42
    Points
    42
    Par défaut Demande de précisions
    Bonjour,

    Dans le cadre de la certification java,
    voici le code test :
    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 Test {
     
    	public static void methode(String str){
    		System.out.println("String");
    	}
     
    	public static void methode(Object obj){
    		System.out.println("Object");
    	}
     
    //	public static void methode(Integer inte){
    //		System.out.println("Integer");
    //	}
     
     
        public static void main(String args[]){
        	methode(null);
        }
    }
    Le resultat a l'execution affiche String, pourquoi ???
    Quelles sont les regles java, pour determiner la methode a invoquer ???

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Et quand tu mets une méthode avec un paramètre Integer, ça dit que c'est ambigue (avec String)...

    Je suis intéressé aussi par les règles de priorité

  3. #3
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Je crois avoir compris...

    Si plusieurs méthodes ont le même nom et un paramètre, et si on appelle la méthode avec null comme paramètre, 2 cas:
    - soit les types du paramètre de chaque méthode sont sur une même lignée (Object > Number > Integer par exemple), alors la méthode avec le type de paramètre le plus spécifique sera appelée ;
    - sinon, erreur de compilation, pour ambiguité...

    Et apparamment ça s'applique de la même manière si on fait la même chose avec plusieurs paramètres...

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 42
    Points
    42
    Par défaut
    Hypothese : a la compilation il examine la signature de la methode.
    - ambiguté entre Integer et String ok, Tous deux herite de Object par defaut, alors pourquoi la compilation réussi entre Object et String ???

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par kdick
    Hypothese : a la compilation il examine la signature de la methode.
    - ambiguté entre Integer et String ok, Tous deux herite de Object par defaut, alors pourquoi la compilation réussi entre Object et String ???
    Parce que Integer n'hérite pas de String et String n'hérite pas d'Integer...

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 42
    Points
    42
    Par défaut
    Je reformule ma question,
    compilation
    String et Object compilation ok
    Integer et Object compilation ok
    Integer, String et Object compilation ko -> ambiguté sur les signatures.

    String herite de Object
    Integer herite de Object
    Pourquoi les deux premiers cas passent ???
    le String ou Integer peut etre vu comme un Object !

    dans les 2 premiers cas :
    Il doit y avoir un ordre de préference qui tient compte de la spécialisation de la classe. Ce qui explique le choix pour String(ou Integer) face a Object.

    le 3 cas.
    la compilation evite toute ambiguté en l'nterdisant. Ce qui garantit la regle cité plus haut ???

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par kdick
    dans les 2 premiers cas :
    Il doit y avoir un ordre de préference qui tient compte de la spécialisation de la classe. Ce qui explique le choix pour String(ou Integer) face a Object.
    C'est ce que j'ai dit dans mon post de 16h38...

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 42
    Points
    42
    Par défaut
    oki merci

Discussions similaires

  1. demande de précisions
    Par loucasse dans le forum Access
    Réponses: 3
    Dernier message: 24/10/2006, 09h56
  2. Demande de précision le middleware
    Par david42 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 23/05/2006, 11h11
  3. Demande de précision sur "Extends" ..
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 12/02/2006, 14h25
  4. demande de précision et d info
    Par cm16 dans le forum Windows
    Réponses: 7
    Dernier message: 11/01/2006, 11h08
  5. Demande de précisions sur Backup/Restore et transactions
    Par lio33 dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 16/11/2005, 12h08

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