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 :

surcharge de fonction: problème de signature


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut surcharge de fonction: problème de signature
    Bonjour à tous

    Je souhaiterai surcharger une fonction, et Java me bloque en me disant qu'elles ont la même signature.Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public void fill( ArrayList<Double> v, InputValueModel ivm){ }
     
        public void fill( ArrayList<ArrayList<Double> > vv, InputValueModel ivm){ }
    Est-ce que ça veut dire que Java ne regarde pas le contenu des Collections pour établir la signature des méthodes ? Si c'est le cas, c'est un peu limité par rapport à C++

    Merci de m'apporter vos lumières sur la question

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par scheme Voir le message
    Est-ce que ça veut dire que Java ne regarde pas le contenu des Collections pour établir la signature des méthodes ?
    Ouaip. Plus exactement, les génériques des types paramétrés sont effacés, et les paramètres génériques de la méthodes sont réduits au plus large type concret, pour constituer la signature de la méthode.
    Ce n'est pas seulement le contenu des Collections, quoi.

    Si c'est le cas, c'est un peu limité par rapport à C++
    Sans doute. Je ne sais pas comment C++ gère les templates à ce niveau-là. Mais rappelons tout de même qu'en Java, toute méthode non-static est virtuelle, et aussi que toute méthode est accessible à l'introspection.
    Pas exactement le même univers que C++, tout ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    erreur définie par la norme comme "name clash"
    ça vient du fait de la réalisation des types paramétrés qui est différente en Java des "templates" de C++.
    Dans le binaire tout est Objet (le type paramètre de ArrayList est un truc qui n'est vu que par le compilateur) et donc deux méthodes qui prendraient en paramètre une ArrayList<Machin> et une ArrayLis<Truc> auraient la même signature ... donc ça marche pas

    edit: grilled
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    Ok merci de vos réponses

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

Discussions similaires

  1. Problème de signature d'une fonction
    Par Jimmy91 dans le forum C++
    Réponses: 9
    Dernier message: 16/09/2014, 17h32
  2. Problème de signature d'une assembly
    Par lapec_and_cie dans le forum Delphi .NET
    Réponses: 5
    Dernier message: 23/01/2006, 12h31
  3. [MFC] Surcharger des fonctions de CView
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 21h24
  4. singleton, polymorphisme, et surcharge de fonction
    Par legend666 dans le forum C++
    Réponses: 11
    Dernier message: 14/11/2005, 09h27
  5. Surcharge de fonction d'un edit dynamique
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/10/2003, 11h56

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