next up previous contents
suivant: Extension de classes monter: Classes précédent: Classes emboîtées   Table des matières

Classe locale

En considérant la classe Enumeration ci-dessous, on peut créer un objet énumération en utilisant une classe locale déclarée à l'intérieur d'une fonction.

On rappelle que la classe Enumeration permet de parcourir des classes contenant des collections d'objets. Pour l'utiliser, il suffit de l'implémenter !!!



transparent
Interface Enumeration


package java.util; 

public interface Enumeration{
  boolean hasMoreElements();
  Object nextElement() throws NoSuchElementException;
}


transparent
Classe locale: enumerer


class EnumTab{
 public static Enumeration enumerer(final Object[] objs){
    class Enum implements Enumeration {
        private int pos = 0;
        public boolean hasMoreElements(){
            return (pos < objs.length);
        }
        public Object nextElement() throws NoSuchElementException
        {
            if (pos >= objs.length )
                throw new NoSuchElementException();
            return objs[pos++];
        }
    }
    return new Enum();
 }
}


On peut ensuite utiliser cette méthode pour parcourir des tableaux d'objets avec l'interface Enumeration. On peut, par exemple, faire un parcours linéaire pour n'importe quel classe qui implémente l'interface Enumeration.

On notera:



transparent
Parcours


class ParcoursLineaire{
    public static boolean parcourir(Enumeration tab, 
                                    Object o){
        while(tab.hasMoreElements())
            if(o.equals(tab.nextElement()))
                return true;
        return false;
    }
}


transparent
Suite...


class Main{
    public static void main(String[] args){
        Object[] t= new Integer[10];
        Vector v=new Vector();
        for(int i=0; i<t.length; i++){
            t[i]=new Integer(i*i);
            v.add(new Integer(i*i));
        }
        if(ParcoursLineaire.parcourir(EnumTab.enumerer(t),
                                      new  Integer(81)))
            System.out.println("OK");
        if(ParcoursLineaire.parcourir(v.elements(),
                                      new  Integer(81)))
            System.out.println("OK");
    }
}



next up previous contents
suivant: Extension de classes monter: Classes précédent: Classes emboîtées   Table des matières
Hugues Fauconnier 2002-01-11