Partage
  • Partager sur Facebook
  • Partager sur Twitter

Généricité

Définir plusieurs types de retours

Sujet résolu
    19 avril 2017 à 20:42:55

    Bonjour,

    Je souhaiterai définir une méthode ayant un type de retour générique :

    import java.util.Random;
    
    public class main{
    
        public static void main(String[] args){
    
            Integer a = 2;
            Double b = 2;
    
            System.out.println(hasard(a,b));
        }
    
        public static <T,A> T,A hasard(T a,A b){
    
            Random r = new Random();
            int nbAleatoire = r.nextInt(2);
    
            if(nbAleatoire == 1){return a;}
            else{return b;}
    
        }
    }

    Cependant, le fait de définir la méthode comme ceci :

     public static <T,A> T,A hasard(T a,A b){
    ...
        }

    N'est pas accepté par le compilateur, comment faire ?

    Merci d'avance


    -
    Edité par Valenciano 19 avril 2017 à 21:40:53

    • Partager sur Facebook
    • Partager sur Twitter

    Développeur Web autodidacte HTML5/CSS3/JS + C# (ASP.NET Core) / Python (Django)

      19 avril 2017 à 22:13:13

      Lu'!

      Ce que tu veux faire n'a pas de sens. Donc, encore heureux, tu ne peux pas faire ça. Le type doit être fixé au moment de la compilation.

      -
      Edité par Ksass`Peuk 19 avril 2017 à 22:14:29

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        19 avril 2017 à 22:35:47

        D'accord donc on ne peut pas avoir de méthode générique retournant un objet de type T ou de type A mais juste un seul type ?

        • Partager sur Facebook
        • Partager sur Twitter

        Développeur Web autodidacte HTML5/CSS3/JS + C# (ASP.NET Core) / Python (Django)

          20 avril 2017 à 8:13:47

          Oui. Comment voudrais tu typer l'array-list dans ce programme sinon ?

          ArrayList</*que mettre*/> l = new ArrayList</*que mettre*/>();
          
          for(int i = 0; i < 10; ++i)
            l.add(hasard());
          • Partager sur Facebook
          • Partager sur Twitter

          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            20 avril 2017 à 11:33:32

            Oui c'est plus logique maintenant ;)

            Merci de ta réponse !

            • Partager sur Facebook
            • Partager sur Twitter

            Développeur Web autodidacte HTML5/CSS3/JS + C# (ASP.NET Core) / Python (Django)

            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