Exemple28_AbstractCollectionRetourTélécharger Exemple d'une implémentaiton minimale de la classe abstraite AbstractCollection Exemple28.java //Exemple d'une implémentaiton minimale de la classe abstraite AbstractCollection // import java.util.*; public class Exemple28 { public static void main(String... args) { System.out.println("Execution de Exemple28"); // Création de MaCollection MaCollection<Integer> c = new MaCollection<Integer>(100); c.add(100); c.add(200); c.add(10); System.out.println(c); System.out.println("Avec un iterateur:"); for(Integer e:c)System.out.println(e); } } // Implémentation de MaCollection // qui hérite de la classe abstraite qui ne contient que deux méthodes abstraites : size et iterator. Les autres sont implémentées et retourne par défaut l'exception : UnsupportedOperationException. // // Cela permet de ne pas implémenter toutes les méthodes de l'interface Collection // class MaCollection<E> extends AbstractCollection<E> implements Iterator<E> { private int current; private int nb; private E[] tab; public MaCollection(int capacity) { // tab=new E[capacity] provoque l'erreur de compilation : // error: generic array creation // Il faut faire : tab=(E[])(new Object[capacity]); } // ---------- Implémentation des méthodes abstraites ------------- // de AbstractCollection // // Méthode qui retourne le nombre d'éléments utiles de la collection public int size() { return nb; } public Iterator<E> iterator() { current = 0; return this; } // ---------- Implémentation des méthodes de l'interface ------------- // Iterator // Il reste encore des éléments à parcourir public boolean hasNext() { return (current<nb); } // Retourne l'élément courant et passe au suivant public E next() { E e = tab[current]; current++; return e; } // ---------- Surcharge des méthodes de la classe ------------- // AbstractCollection // Ajouter un élément public boolean add(E e) { if (nb==tab.length) return false; tab[nb]=e; nb++; return true; } // Conversion en chaine de la collection public String toString() { String s=""; for(int i=0;i<nb;i++) s=s + tab[i] + " "; return s; } } compil.bat mkdir bin del /f /s /q bin\*.class javac -d bin *.java pause run.bat cd bin java Exemple28 pause