Partage
  • Partager sur Facebook
  • Partager sur Twitter

Question rapide : généricité

Sujet résolu
    8 novembre 2008 à 11:37:05

    Hello,
    D'habitude je n'ai pas trop de problèmes en java, j'aide plutôt, en principe.

    Aujourd'hui, un petit truc m'intrigue. J'aimerais comprendre pourquoi ceci n'est pas permis :
    public class Test<A,B> {
    public void foo (A some, B other) { 
    //...
    }
    public void foo (B other, A some) {
    // ...
    }
    //...
    }
    


    Le compilateur me répond name clash.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      8 novembre 2008 à 12:03:33

      Bonjour, le type de A et B est défini au Runtime, pas à la compilation, donc il est impossible au compilateur de prédire que A et B ne seront pas de même type, ce qui fait que la fonction ne peut être considérée comme une surcharge valide.

      par exemple:
      public class Test<A,B> {
          //Si A est de type String et B aussi, ça donne au runtime
          public void foo (String some, String other) { 
          //...
          }
      
          public void foo (String other, String some) {
          // ...
          }
          
          //...
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        8 novembre 2008 à 13:38:45

        Bien vu, j'avais pas pensé à ça du tout.
        Comme le titre l'indique, c'était vraiment une ... question rapide.

        Merci bien.
        • Partager sur Facebook
        • Partager sur Twitter
          8 novembre 2008 à 17:24:25

          Bonjour
          Mais c'est quoi le Runtime ?
          Merci.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            8 novembre 2008 à 18:43:32

            Citation : kacha

            Bonjour
            Mais c'est quoi le Runtime ?
            Merci.



            Avec un peu de bon sens on trouve "Runtime" = "Run" + "Time" <=> moment de l'exécution.
            • Partager sur Facebook
            • Partager sur Twitter
              8 novembre 2008 à 22:40:48

              Citation

              +1


              C'est pas très pertinent comme post si ce n'est pas pour ajouter des précisions, le "+1".
              • Partager sur Facebook
              • Partager sur Twitter
                9 novembre 2008 à 12:39:09

                Bonjour ,mais les types doivent déclaré dans le code Source donc le compilateur connaitre les types !
                Vraiment je comprend pas bien le runtime
                SVP une explication .
                Merci
                • Partager sur Facebook
                • Partager sur Twitter
                  9 novembre 2008 à 18:01:43

                  Non, il fait des suppositions. IL essaie de deviner les types.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Question rapide : généricité

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown