Les classes anonymes permettent de créer des instances de classes sans nom. Ce mécanisme permet aussi de créer des objets en remplaçant (ou en redéfinissant) des méthodes d'une classe sans pour autant créer une classe extension. Il s'agit surtout donc de facilités d'écriture. Notons cependant que la relecture des programmes utilisant de telles constructions n'est pas toujours simple.
Ces constructions sont souvent utilisées dans la construction d'interfaces graphiques.
import java.util.*; class Z { public static Enumeration enumerer(final Object[] objs){ return new 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++]; } }; } }
Attr nom = new Attr("Nom"){ public Object setVal(Object nv){ System.out.println("nom est mis à: " +nv); return super.setVal(nv); } };