Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    49

    for each con un oggetto creato

    Ciao a tutti...
    se volessi fare la seguente cosa

    codice:
    MyClass a = new MyClass();
    for (MyClass b : a)
    {
      ...
    }
    cosa dovrei fare esattamente? per caso, devo implementare il metodo toArray() o qualcosa del genere?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: for each con un oggetto creato

    Originariamente inviato da TuTToWeB
    Ciao a tutti...
    se volessi fare la seguente cosa

    codice:
    MyClass a = new MyClass();
    for (MyClass b : a)
    {
      ...
    }
    cosa dovrei fare esattamente? per caso, devo implementare il metodo toArray() o qualcosa del genere?
    Dipende molto da cosa fa la tua classe.

    Comunque affinché un oggetto possa essere il "target" di un ciclo for-each, la sua classe deve implementare la interfaccia Iterable (package java.lang). Iterable definisce solo un metodo iterator() che ritorna un oggetto Iterator (che ha i metodi hasNext, next usati appunto per fare la iterazione).

    Ripeto: bisogna vedere cosa devi fare e cosa fa la tua classe. Il codice che hai postato sopra non ha molto senso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    49

    Re: Re: for each con un oggetto creato

    Originariamente inviato da andbin
    Dipende molto da cosa fa la tua classe.

    Comunque affinché un oggetto possa essere il "target" di un ciclo for-each, la sua classe deve implementare la interfaccia Iterable (package java.lang). Iterable definisce solo un metodo iterator() che ritorna un oggetto Iterator (che ha i metodi hasNext, next usati appunto per fare la iterazione).

    Ripeto: bisogna vedere cosa devi fare e cosa fa la tua classe. Il codice che hai postato sopra non ha molto senso.
    è una lista linkata fatta da me...
    quindi ha senso implementare iterable.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: for each con un oggetto creato

    Originariamente inviato da TuTToWeB
    è una lista linkata fatta da me...
    quindi ha senso implementare iterable.
    Benissimo, allora nella tua classe devi implementare Iterable<Qualcosa>

    Io ti faccio un esempio di una classe iterabile che contiene un array di stringhe (il codice non è che serva realmente un granché ... giusto solo come esempio!):

    codice:
    import java.util.*;
    
    class Prova
    {
        public static void main (String[] args)
        {
            MiaClasse mc = new MiaClasse ();
    
            for (String s : mc)
                System.out.println (s);
        }
    }
    
    class MiaClasse implements Iterable<String>
    {
        private String[] lista = { "ciao", "prova", "iterazione" };
    
        public Iterator<String> iterator ()
        {
            return new Iterator<String> () {
                int idx = 0;
    
                public boolean hasNext () {
                    return idx < lista.length;
                }
    
                public String next () {
                    if (idx < lista.length)
                        return lista[idx++];
                    else
                        throw new NoSuchElementException ();
                }
    
                public void remove () {
                    throw new UnsupportedOperationException ();  // remove non supportato!
                }
            };
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.