Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java]Problème de Type...

... ou autre? Je ne saisis pas le problème.

Sujet résolu
    19 février 2007 à 15:34:54

    Salut,

    J'ai un problème, l'erreur qui m'est signalée est : la méthode getnum n'est pas définie pour le type Object.

    Pourtant System.out.println(Iter.next().getClass()); affiche bien Message, c'est bien un Objet message. Pourquoi je ne peux pas faire un getNumMessage? getNumMessage est pourtant publique...

    Merci d'avance pour vos idées et propositions. ^^

    Voici la méthode dans sa classe. Existent d'autres méthodes.
    public class Message
    {
            private int numMessage;
            private String dateMessage;
            private String libelMessage;
           
            public int getNumMessage() {
                    return numMessage;
            }
    }


    Voici l'appel de la méthode.
    import java.util.ArrayList;
    import java.util.Iterator;

    public class NoteBook {
                   
                // Stockage pour une quantité arbitraire de notes.
                private ArrayList notes;
                private int i;
            private int j;


    public void showNote(int noteNumber)
                {
                    int num;
                    if(noteNumber < 0) {
                        // Ce n'est pas un numéro de note valide, ne rien faire.
                    }
                    else if(noteNumber < numberOfNotes()) {
                        // C'est un numéro de note valide, voir s'il correspond à un message.
                            Iterator Iter = notes.iterator();
                           
                            while (Iter.hasNext())
                            {
                                    System.out.println(Iter.next().getClass());
                                    num = Iter.next().getNumMessage();
                                   
                                    /* Si noteNumber est égal à getNumMessage alors on affiche getLibelMessage.*/
                                    if (noteNumber == num)
                                    {
                                            System.out.println("On affiche le libellé!");
                                            System.out.println(Iter.next().getLibelMessage());
                                    }
                            }
                           
                           
                    }
                    else {
                        // Ce n'est pas un numéro de note valide, ne rien faire.
                    }
                }
    }
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2007 à 19:55:08

      Salut,

      iter.next() te retourne ici un objet de type Object, qui n'est donc pas un objet de type Message et qui ne contient donc pas la méthode getNumMessage(), pour y acceder tu peux faire un cast :

      ((Message)iter.next()).getNumMessage()


      Ou alors si tu utilises une version de java 5.0 ou supèrieure, tu peux utiliser directement un type ArrayList<Message> pour ta variable notes, il te faudra donc ensuite utiliser un type iterator<Message> pour parcourir ta liste et dans ce cas iter.next() te retournera directement un objet de type Message donc il n'y aura pas de soucis n'y d'erreur de cast possible.

      ++
      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2007 à 23:18:36

        Tu n'as pas besoin d'utiliser d'Iterator avec Java 1.5 et supérieurs.

        Utilise cette syntaxe :


        ArrayList<Object> l = new ArrayList<Object>();
        for(Object o : List l){    // Pour tous les objets o de la liste d'objets l
        System.out.println(o) // afficher l'objet, par exemple
        }
        • Partager sur Facebook
        • Partager sur Twitter
          20 février 2007 à 0:45:10

          Merci à tous les 2. ^^

          Je vais garder la première solution et qu'elle se rapproche plus de ce qui est demandé car c'est un travail scolaire.

          Je garde en mémoire, pour mes travaux plus personnels, la 2ème solution, qui a l'air approximativement 200 fois plus simple.

          Merci ^^

          ;) La vérole sur vos gueules. Je répète, la vérole sur vos gueules. Todo esta aqui.
          • Partager sur Facebook
          • Partager sur Twitter
            20 février 2007 à 0:58:18

            L'horizon c'est des conneries inventées par les utopistes.. Si tu veux la porte, elle est là ! ;)

            Pour ma méthode, sache que cette méthode est préconisée par Sun depuis Java 1.5 (et de toute façon fait plus ou moins la même chose en bytecode). C'est l'équivalent du foreach en C. Il faut l'utiliser en cas de consultation, ou modification des objets. En revanche, si tu veux ajouter un objet à un endroit donné, manipuler l'ordre, etc.. il te faudra bien utiliser un itérateur.

            Voila .

            ;)
            • Partager sur Facebook
            • Partager sur Twitter
              20 février 2007 à 13:24:34

              Citation : dworkin

              C'est l'équivalent du foreach en C.


              C# ? (ou D ou sûrement d'autres)
              • Partager sur Facebook
              • Partager sur Twitter

              [Java]Problème de Type...

              × 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